The inspiration for this project came from a problem my mother encountered in her role as an art teacher. The laptops provided to the students by the school have restricted USB ports for security reasons, and the internal network does not allow accessing other devices in the network.
To help with this, I wanted to build a web service, so simple that any student could just navigate to a URL, pick a project from a list, enter their name and upload their file without needing to create an account.
I chose PHP for the backend because my existing web server was already running Apache with PHP and a MySQL DB installed. The frontend itself is built using TypeScript and React, which might seem like overkill for a simple uploader, I had to learn React at the time for work, so this was a good test for my skills.
Since some of the art the students had created would be displayed in the halls of the school, they wanted a way to link the physical pieces to digital content like process videos or audio recordings. I updated the service to allow for individual file share links, which enabled them to print QR codes and glue them next to the physical art items.
Interestingly, I frequently find myself needing to move a screenshot or a small file from my phone to my desktop. So, I just keep a tab open to my own instance of the upload service, on which I can upload a file and have it sitting in my downloads folder on my PC a few seconds later.
I am fully aware that this solution is not built for massive scale or high-security environments. The authentication is very simple, and the way files are stored would likely need to be rethought if thousands of users were using it at once.