Build your personal watch vault.
Create lists for everything you want to watch β Movies, Series, Anime.
π Live App: Open WatchVault
WatchVault is a full-stack web application for organizing personal entertainment. Rather than passive logging, it gives users full control through custom lists and flexible collection management β whether queuing a weekend watchlist, tracking series progress, or sorting anime by season.
WatchVault is not a streaming platform. It is a personal organization tool.
This project was built as a portfolio piece, developed primarily through my own problem-solving and technical skills. The entire application β frontend, backend, database, authentication, and deployment β was completed independently within a 12-hour build window.
The frontend was designed and built using vanilla HTML, CSS, and JavaScript without any frameworks or UI libraries. ChatGPT was used only as a reference tool for clarification and guidance during development.
Content Discovery
- Search movies, series, and anime via the OMDb API
- Look up titles by keyword or IMDb ID
- Browse trending content from the homepage
List Management
- Create and name custom collections
- Add and remove titles freely across any list
- Track episode progress with season and episode details per title
Authentication
- User registration and login
- Stateless sessions via JSON Web Tokens (JWT)
Data Persistence
- MongoDB via Mongoose ODM
- Separate schemas for users, lists, and saved titles
- All data scoped per user
| Layer | Technology |
|---|---|
| Frontend | HTML, CSS, Vanilla JavaScript |
| Backend | Node.js, Express.js |
| Database | MongoDB (Mongoose ODM) |
| Auth | JSON Web Tokens (JWT) |
| External API | OMDb API |
| Hosting | Replit |
The frontend uses no frameworks or libraries by design β a deliberate choice to demonstrate proficiency with core web fundamentals.
Client (HTML / CSS / JS)
β
Express REST API
β
Business Logic Layer
β
MongoDB via Mongoose
watch-vault/
β
βββ routes/
β βββ auth.js # Register & login endpoints
β βββ lists.js # List CRUD operations
β βββ savedTitles.js # Title save/remove logic
β
βββ models/ # Mongoose schemas β User, List, Title
βββ server.js # Entry point
βββ .env # Environment variables (not committed)
βββ package.json
βββ README.md
Prerequisites
- Node.js v18+
- MongoDB Atlas account or local MongoDB instance
- OMDb API key β free registration here
1. Clone the repository
git clone https://github.com/jbmsacps-stack/watch-vault.git
cd watch-vault2. Install dependencies
npm install3. Configure environment variables
Create a .env file in the project root:
MONGO_URI=your_mongodb_connection_string
API_KEY=your_omdb_api_key
JWT_SECRET=your_jwt_secret_key4. Start the server
node server.jsVisit http://localhost:5000
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/auth/register |
Register a new user |
POST |
/api/auth/login |
Login and receive JWT |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/lists |
Get all lists for the authenticated user |
POST |
/api/lists |
Create a new list |
DELETE |
/api/lists/:id |
Delete a list by ID |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/saved |
Save a title to a list |
DELETE |
/api/saved/:id |
Remove a title from a list |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/search?q=keyword |
Search titles by keyword |
GET |
/api/search?id=imdbID |
Fetch a title by IMDb ID |
- Episode-level progress tracking
- Automated trending content updates
- UI transitions and animation improvements
- Role-based access control
- Production deployment via Docker or VPS
- Public list sharing
Joshua Baskar β Aspiring Full-Stack Developer
π¬ jbmsacps@gmail.com
π GitHub Β· LinkedIn Β· Live App
WatchVault Β· Copyright Β© 2026 Joshua Baskar Β· All rights reserved.
- Viewing and studying the source code for personal learning
- Referencing the project in non-commercial academic or portfolio work, with attribution
- Private forking for personal experimentation
- Sharing links to this repository or the live application with proper credit
The following require explicit written permission from the author:
- Publicly publishing this project or any substantial portion of its code
- Monetizing this project in any form β paid access, commercial integration, ad revenue, etc.
- Redistributing modified or unmodified versions under a different name or identity
- Claiming authorship or ownership of any part of this project
Commercial or revenue-generating use may be discussed. Licensing arrangements, including royalty terms, are open to reasonable negotiation.
π¬ Contact: jbmsacps@gmail.com
Personal education, commentary, criticism, and non-commercial research are understood to fall within fair use and are welcomed.
WatchVault was developed independently. Any resemblance to existing products, services, or applications in name, design, or functionality is coincidental and unintentional.
| Use Case | Status |
|---|---|
| Personal learning & study | β Permitted |
| Private forking & experimentation | β Permitted |
| Sharing with attribution | β Permitted |
| Academic reference with credit | β Permitted |
| Public publishing | |
| Commercial or monetized use | |
| Redistribution under a different name | β Not permitted |
| Claiming ownership | β Not permitted |
Unauthorized use may be subject to applicable intellectual property and copyright law. The author reserves the right to pursue all available remedies in response to violations.
Last updated: April 2026 Β· Created by Joshua Baskar
β If you found this useful, a star is appreciated.


