My first take at using a PHP framework (CodeIgniter), for developing an in house tool used for uploading and sending file between clients and staff for production. The idea is simple; client needs to send you a file but rather than trying to explain to them how to use an FTP client (have you ever tried explaining how to download and install software, yet alone upload files to a client with no technical skills whatsoever), The client can send files through an easy to use web interface which adds files into an S3 bucket on AWS.
Here’s how it works:
A staff member registers the client by his/her email address within their dashboard for the uploader. The client then receives a link where they can upload their files, which contains a token value which links the files they upload to the staff member who registered them. Once the upload has been completed, the staff member receives a notification (email), containing the names of the files sent by the client.
Staff members can also upload files of their own if they wish to share links with a client or if they need to have a space to add their files to continue working on outside of the office, or just to keep a back up somewhere. The user interface is built on bootstrap, allowing easy access for clients and staff to share/send links to files from their mobile devices.
Using CodeIgniter was a cinch. The documentation found in the help section of their site is top notch, making it easy for a front-end focused web developer to feel like a high-end engineer. Using the framework helped give me a better understanding of the MVC (model, view, control) programming workflow. Separating the database layer, controller logic and content/data output makes it easier to work on your application in a modular/organized approach, rather than sticking a bunch of page logic a top of your application, making it harder to troubleshoot and collaborate with other developers.
While using CodeIgnitor, I learned a thing or two about the concept of abstraction and encapsulation when creating my controllers and models, something I’ve been wanting to expand my knowledge in for future development endeavors (I’ve always wanted to try developing an iPhone app).