feat: add file upload functionality #3