Inspiration
Being from an ML background, I was trying to figure out Docker when I came across this hackathon. Seemed interesting as it captured the aspects that I am skilled at and want to be skilled at.
What it does
Hence I started brainstorming ideas and finally settled upon CineManch, a movie recommender application.
How we built it
It contains two layers, backend and UI. UI is built upon ReactJS and the backend is based on Python for running APIs and handling ML inferencing, and MongoDB is used to store the data acquired from the user based on suggested movies from the API. When the user first enters the UI, there will be a bunch of movies to select from, and once clicked, it will send for inferencing for the recommendations. Recommendations will be a combination of content-based and collaborative filtering-based recommendations, so there can be uniqueness every time we update a model that is used for collaborative filtering as content-based will only require training if we will add any new movies. For Content-based, I have utilized a cosine similarity matrix, and for Collaborative filtering, SVD along with cosine similarity.
Challenges we ran into
As I did not have much experience with ReactJS and Docker, it was a bit troublesome for me to figure out both. Also, Collaborative filtering was something I had heard of but never implemented so it was a bit confusing during implementation.
Accomplishments that we're proud of
But despite working with things I never worked with, I was able to create the Docker images for them and Docker compose file to run everything in one go, the whole process has made me so comfortable creating the images, network, volumes, and their respective Dockerfile
What we learned
Now I am comfortable working with Docker I wasn't a week ago, know commands by hard and feel comfortable containerizing any application once I see how it runs in a local setup
What's next for Movie Recommender
There were a couple of things I could think of that could have been a good addition. First and foremost, wanted to automate the training of the collaborative filtering model as we are storing the inputs from the user, the recommendations could have been used to improve the model better from every time the application was used. The second CI/CD could have been integrated so that a new Docker Image would have been created every time new changes were completed. Third, if it could be deployed to Kubernetes, monitoring applications like Prometheus could have been attached to monitor the resources. As all this also would have been totally new for me, I will be leaving it for a later time
Log in or sign up for Devpost to join the conversation.