Movie Lists

A clean and helpful app for finally tracking all the movies I've been intending to watch.

Project Image

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
← Back to Projects