Domain Films is a full-stack movie streaming platform developed as part of the CS 4800 – Software Engineering course at Cal Poly Pomona. The project features both web and mobile interfaces, allowing users to browse, search, and stream movies and shows seamlessly across devices.
This application was created for educational purposes only. All media content used in the project is for demonstration and learning, and all rights to the media belong to their respective owners.
This project was developed by a student team from Cal Poly Pomona. (Team members listed below.)
Ali Momennasab, Ethan Ngo, Joseph Moran, Joshua Yi, Zihao Luo.
Our backend architecture supports both user authentication and media streaming functionality:
-
User & Metadata Backend: Built using Node.js, Express.js, and MongoDB Atlas, deployed on Vercel.
- Handles user registration, authentication, session management, and stores user data such as watch history and preferences.
- Stores media metadata such as titles, descriptions, thumbnails, genres, and watch progress in a flexible NoSQL structure.
- Exposes RESTful API endpoints used by both the web and mobile frontends.
-
Media Streaming Backend:
- Hosted on an Ubuntu 22.04.5 server with Nginx configured as a reverse proxy.
- Utilizes Jellyfin, an open-source media server, to manage and stream video content.
- Protected and accelerated using Cloudflare for CDN caching, HTTPS, DNS routing, and DDoS protection.
-
Static Asset Storage:
- Media thumbnails and user-uploaded images are stored on AWS S3, chosen for efficient delivery of large assets and to reduce load on the database.
The entire frontend of Domain Films is built using React Native, primarily targeting the web platform via React Native for Web through Expo:
- Hosted on AWS Amplify, providing scalable, secure deployment and integration with the backend.
- Developed with React Native, designed for seamless use in desktop and mobile browsers.
- Key features include:
- Movie/show search and filtering by title, genre, and popularity
- Rich media pages with metadata and embedded Jellyfin streaming support
- Authentication, profile management, watchlists, and viewing history
- Fully responsive UI with dark mode and adaptive layouts
The same React Native codebase powers a cross-platform mobile app:
- Developed using Expo, enabling easy builds and deployment for both iOS and Android.
- Mirrors the web functionality:
- Secure login and user profile handling
- Browsing and streaming movies/shows via native Jellyfin integration
- Offers an optimized mobile experience for on-the-go streaming.
- Jellyfin Media Streaming: https://jellyfin.org/docs/
- MongoDB Atlas: https://www.mongodb.com/atlas/database
Below is a demo of Domain Films in action
