A clean and helpful app for finally tracking all the movies I've been intending to watch.
Introduction
Too often do I find out about a movie I might like, often by recommendation of a friend during conversation and I say, out loud, "I'll add that to the list" and yet I have never kept a list. Until now! I decided to create a simple web app that would allow me to keep track of the movies I want to watch with no fuss and no barriers to make it quick and painless to add a new movie.
Django
My go-to web framework is Django which is often over powered for my needs yet does give you everything you need to spin up a working website fast. It works especially well when you have a project that fits the Model View Template architecture, i.e. you are simply storing and displaying entities (like films).
It didn't take long at all before I had models: Movies and MovieList.
class MovieList(models.Model):
name = models.CharField(max_length=256)
code = models.CharField(max_length=256)
users = models.ManyToManyField(User)
def __str__(self):
return self.name
class Movie(models.Model):
api_id = models.IntegerField(primary_key=True)
lists = models.ManyToManyField(MovieList)
def __str__(self):
return str(self.api_id) if self.api_id else ""
Notice the use of a ManyToManyField in both models. Firstly, Movies can belong to many lists and each MovieList can have many Movies. Secondly I want multiple users to be able to have shared MovieLists which means instead of each MovieList having a single user they should be able to have many, and each user should be able to have many MovieLists.
With this setup I needed access to movie information!
The API
All the movie data comes from
The Movie DB. I use the
requests library to make API calls when the user is searching for or loading movies.
Bulma
For the front end I opted for Bulma as I like its aesthetic and I find it very quick to get up and ready with minimal CSS.
Conclusion
I was very happy with this project as it solved a real problem I and my friends had. I created accounts for my friends and myself and we all shared list codes so we could have shared lists and to this day we continue to share movies using this site.
Technologies Used
- Python
- Django
- HTML / CSS / JS