Inspiration
The inspiration and first idea came when we talked about the new trend of making and listening to podcasts and saw that there was no way of review them as well so the idea behind the review application is to have an application that gathers the different types of media and have a playlist of what you like and follow plus the review behind it.
What it does
Our application works by having a register, login page for a user, after having your credentials created and login with them you can search by name of song, singer, group, movie title or podcast name and it shows the results for them and add them to your playlist.
How we built it
We used Flask, MongoDB, Nginx, cAdvisor, Redis, iTunes Search API, Github Actions, and Docker to have a fully developed search function. We started by using flask and mongo to create the user and then the API usage from a python file that connects to the flask and displays the data. We dockerized it and added cAdvisor to monitor inside the application, then we uploaded it to AWS instance and GitHub actions was for automatization to the AWS instance.
Challenges we ran into
It was a challenge to add Redis to cache the API searches because the API results are returned in JSON and Redis cannot store JSON. The data had to be reformatted using json.loads() to cache it in Redis and json.dumps when it is returned and displayed using jinja. Originally I tried to pickle the data because Redis can store byte streams but when the data was returned it was not properly encoded. Originally we started the project as a Flask+React application, but we figured out that using React with Flask was going to be hard, so we changed it to Flask+templates so we could use the knowledge that we already had. Moving all the work from React to templates was not really hard, but we had already taken some time into React and trying to implement the RESTful API for React to consume. We had troubles with the test script given that it run just a few seconds after the Continuous deployment run, so it would always give us 502 HTTP return status, so we would need to add a timer to solve it. Also, some tools used in the test script were not available in the GitHub actions machine, so we would need to test the GitHub actions machine and figure out what tools were available. Using mongo and flask was something a little bit new to some of the team members and the usage was not that clear so we had trouble actually creating and adding the values of the search results to your playlist.
Accomplishments that we're proud of
Using an API
Making Redis available for the API data and having them for a period of time.
Using a different database for upscaling in a future version of the application.
The implementation of new types of docker images that we haven’t used before for a better connection between docker and the deployment.
Use data in different forms (JSON, bits, encoding, decoding, hashed).
What we learned
We learned how to implement the different technologies for the development of a project, we learned how to adapt to the problems we encounter and how to approach them as well as working on a common goal.
What's next for Review Blog
Finish the implementation of adding the API values to the playlist, have an intelligent script which depending on the most searches have them on the database so it´s faster the fetch of data and optimize the usage of the application, have them better categorized by music, movie and podcasts and each one have label categorization by moods, feelings and time so we have an intelligent algorithm that connects them and creates playlists to present them to the user in the future.
Log in or sign up for Devpost to join the conversation.