About Mycoll

overview

MyColl is a web app for cataloging your media collection. With MyColl you can search The Movie Database API to effortlessly add movies to your collection, then record any copies you may own along with their format and platform details. Now you'll know if your copy of Michael Chrichton's 1998 aquatic-horror thriller, Sphere, is a DVD sitting at home on your shelf, a VOD on a service like Amazon's Prime Video, or both!

GitHub Repos: https://github.com/mycoll-org/

Tools: django, pipenv, nginx, docker-compose, node, react, postgresql, gunicorn, certbot, sass
Services: DigitalOcean Droplets, Google Domains

documentation

apis and models

Production API: Postman
Development API: Postman
Entity Relationship Diagram: Lucidchart

fullstack diagram

This diagram represents the first deployed version of MyColl. It was later moved over to the skybur.io domain and droplet at mycoll.skybur.io and db.mycoll.skybur.io. The overall structure with Nginx enforcing HTTPS and serving both ends remained the same. The project server is no longer running.

Mycoll fullstack diagram

challenges and successes

Deploying frontend and backend services on a DigitalOcean Droplet running Ubuntu 18.04
Managing a custom domain from Google Domains and utilizing Let's Encrypt's Certbot to obtain SSL certificates
Configuring Nginx to serve both the frontend and backend services from the same host, and enforcing HTTPS on incoming requests
Creating a Gunicorn socket to bind to the backend server so Nginx can proxy pass to Gunicorn for database requests
Building a backend API server in Django that handles authorization and requests for media data using an integration with The Movie Database
Composing a responsive web design using React components without an external styling library or framework
Implementing authorization with JSON web tokens being passed between a React frontend and Django backend