MyMovieStash
Why MyMovieStash?
I built MyMovieStash for a couple of reasons.
The first reason is that I have a home theater system that I love watching movies on. I have a collection of 4K Ultra HD Blu-ray movies that fully utilize the audio and video capabilities of my home theater system for a theater-like experience. I wanted to be able to catalog the movies I have and log when I added them to my collection and when I watched them. I also wanted to be able to easily share my MovieStash with family and friends to figure out what movie to watch for a movie night.
The second reason is that I also wanted to learn how to design and build a web application, from the front-end, to the back-end, and the infrastructure.
What can you do on MyMovieStash?
- Create your own MyMovieStash account to catalog your movie collection
- Search for a movie by movie title
- Select which format(s) you own of a selected movie
- For each format, log when you added a movie to your MovieStash and when you watched it
- Add the movie to your MovieStash
- View your MovieStash, with filtering and sort by
- Share your MovieStash, with or without applied filtering and sort by
Tech Used to Build and Run MyMovieStash
Front-end
- Bootstrap v5
- Custom CSS/SCSS
- Native JavaScript
- npm and Rollup.js to manage client-side assets
Back-end
- Server-side rendered pages using ASP.NET Core 6 MVC
- C#
- EF Core, EF Core migrations, and LINQ
- ASP.NET Core Identity for user authentication
- Azure SQL Database for data store
Infrastructure
- Azure App Service for hosting
- Cloudflare for DNS records management
- Azure Key Vault for secrets management
- Azure Cognitive Search for searching by movie title
- Azure Data Factory for running ETL pipeline, using Azure Data Lake Storage Gen2 for staging data, and loading transformed data using stored procedures
- Azure Active Directory authentication and Azure role-based access control authorization
- Azure DevOps Services for hosting git repo
- Azure Pipelines for CICD, using dockerized self-hosted agent to run jobs
- Mailgun for transactional emails, MJML for templating
TODO items
- Reduce infrastructure costs
- Setup staging environment
- Create testing suite
- New feature: movie rating system
- New feature: barcode scanner