Inspiration
I thought of building something that might help the developer community. While researching serverless functions, I realised that their nature is to handle 1-3 minute workloads asynchronously. Further, when I asked my experienced seniors about these kinds of workloads, they informed me that the management of media files in the backends of websites is a huge task which could use the asynchronous nature of serverless functions.
What it does
Media Master is a tool for managing media files. It is a simple utility that allows performing everyday tasks on media files asynchronously so that you can focus on your work without being interrupted by heavy lifting.
How we built it
I started making a list of operations I'd like my utility to perform. The obvious one was compression, and then came additional ones like watermarking. Eventually, I also thought of including basic video operations into the mix.
The next step was deciding how the utility would be given the command and the parameters. Since the only contact between the server and our serverless function is through the blob and considering that we ideally shouldn't modify the file itself, the blob's metadata came out as the idea method of communicating the command. Hence I decided that the caller can set a metadata entry command, which will hold the stringified value of the command and its parameters.
Challenges we ran into
We also need to handle cases when a user uploads a file that's not of the intended format. In this case, we also need the ability to inform the site admin/user of the invalid file upload so that they can re-upload it if needed. We use the Courier API to send these emails seamlessly.
Accomplishments that we're proud of
I'm glad to have learned how to develop serverless apps using tools like Azure functions and finally have a good open source repository. I was also able to build the project with minimal package dependencies and hence lower cold start times.
What we learned
I learned the importance of analysing the utility of a product before coding it and tweaking it to meet the user's needs and convenience. I have also learnt the basics of using Azure's CLI and Courier's API.
What's next for Media Master
- Since the utils.py file has separate functions for each command, the process for adding new functions can be made extremely smooth for external contributors by properly documenting the project.
- Moreover, we can also provide the functionality to provide a maximum input and output file size limit to ensure optimal resource usage.

Log in or sign up for Devpost to join the conversation.