Received; Public bucket for receiving files
Tags: twiliohackathon, webdev, opensource, php
Published: 2020-04-05 06:43:17

Hi, I have this idea for a while for building a file sharing platform that allow people to create a public bucket and share it with their friends and co-workers so they can send to them whatever file they want and it will saved their private storage.

## Why

I've faced a lot of time wasting situations that led me think about a similar solution. Situations like:
- The fact that a lot of social media platforms downgrade the images or restrict the file types or nagging about security issues when trying to attach compressed files that contain code (mostly when it contains JavaScript files for example). Even more, platforms like Facebook randomly block the sharing of external storage links (Like Google Drive) in private messages. They sometimes identify them as Spam.
- Sometimes, I use a computer or phone of a friend and I need to send a file for myself. I've always hoped for a place online where I can save it securely for myself later.
- Exchanging files between my phone and computer quickly.
- Sometimes when I ask people to send me files over Wetransfer the majority of them will ask me about my email which annoys me. Probably it's not clear enough that you can rather generate a shareable link than sending the link to an email. Without speaking on the 7 days expiry for the free plan (which is totally understandable)

## Goal

My goal, is to build a platform that enable people to reserve a storage space and create a public gateway with an easy to remember URL. Users can protect their public buckets with a password or create a password per folder (to keep the URL simple). Additionally, they will be able to control the type of files and size the want to receive in order to adhere to their hosting plan.

*Example*
URL will be recieved.app/sunchayn
password to upload to `root` folder: 123456
password to upload to `personal_files` folder: 123456@

---

This Hackathon is an opportunity to explore my ideas and prototype for the product. I'll keep it minimal for now but on the long run I'm planning to add numerous features that will make the experience more pleasant and secure.

### Theme

Mainly I'll focus on the *X-factors* category as I'll push myself toward creating an usable and technically robust product. Also, *Interesting Integrations* will be a potential aim as I'll most likely integrate cloud storage APIs like google drive to overcome the storage limitation at the beginning.

### Twilio APIs

Initially I'll make use of Twilio `Verify` and `Authy` APIs as I'll enable 2FA by default. However, I would like to use as much as I can. Like integrating `SendGrid` and `Programmable SMS` to create notification channels. Having these 4 APIs working together would be a good starting point for people interested in learning how to use Twilio products in a real life projects as intended from the Twilio CodeExchange program.

### Stack

My stack will be mainly centered around this golden trio: Laravel + VueJs + Tailwind CSS

### Plan

Step 1:
First of all I'll explore more Twilio products to get comfortable with.

Step 2:
I'll establish the architecture and the database design for the product.

Step 3:
Product design & identity.

Step 4:
I'll approach an incremental process to delivery functional modules (Design, Testing, Code).

Step 5:
Deploying a demo.

---

### Links

Project's repository: [Recieved on Github](https://github.com/sunchayn/received)

Twitter: [@mazen_touati](https://twitter.com/mazen_touati)

---

I'm writing this post to serve as a commitment for me to continue this journey. If you find this project interesting feel free to share your feedback or idea. 

Thanks for reading.