Link to project:

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


  • Bootstrap v5
  • Custom CSS/SCSS
  • Native JavaScript
  • npm and Rollup.js to manage client-side assets


  • 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


  • 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