A full-stack web app that lets users search for movies, view details, and manage a personalized watchlist, including ratings, notes, and a watched list. Users can also email themselves their watchlist.
Every PR will have to include documentation. Refer to the Documentation Example folder on documenting code and providing use case documentation.
- Search movies using a public API (The Movie Database API).
- Show results as cards with title, poster, and release year.
- Clicking a movie shows details (plot, rating, actors, etc.).
- Add/remove movies to/from a “My Watchlist.”
- Mark a movie as “Watched.”
- Add a personal rating (1–10) and notes.
- Separate views: “To Watch” and “Watched.”
- Store the watchlist locally (JSON file or database, depending on team skill level).
- Optionally, add user login later (stretch goal).
- Email your watchlist to yourself as a nicely formatted message.
- Use something like Nodemailer (Node.js) for this.
- Vanilla JS
- HTML, CSS
- Axios for requests
- Node.js + Express
- JSON file or SQLite/MySQL depending on skills
- Nodemailer for email feature?
- Build movie search UI and results list
- Handle movie detail modal or page
- Connect frontend to movie API
- Design responsive layout
- SearchBar.js
- MovieCard.js
- MovieDetails.js
- Fetch API functions
- Set up Express server
- Create routes for watchlist CRUD (GET /watchlist, POST /watchlist, etc.)
- Decide persistence (start with JSON file, migrate to SQLite if time)
- Add route to handle “Email my list”
- server.js
- routes/watchlist.js
- controllers/watchlistController.js
- data/watchlist.json or db.sqlite
- Build watchlist UI (list, edit, delete, mark watched)
- Add forms for rating and notes
- Integrate backend persistence
- Implement email feature (Nodemailer endpoint)
- Watchlist.js
- WatchedList.js
- EmailForm.js
- Backend email route /email-watchlist
movie-tracker/
├── client/
│ ├── public/
│ │ ├── index.html
│ │ ├── styles.css
│ │ └── assets/
│ │ └── icons, images, etc.
│ ├── src/
│ │ ├── components/
│ │ │ ├── searchBar.js
│ │ │ ├── movieCard.js
│ │ │ ├── movieDetails.js
│ │ │ ├── watchlist.js
│ │ │ └── emailForm.js
│ │ ├── app.js
│ │ └── index.js
│ └── package.json
└── server/
├── routes/
│ ├── watchlist.js
│ └── email.js
├── controllers/
│ └── watchlistController.js
├── data/
│ └── watchlist.json
├── server.js
└── package.json