Skip to content

Latest commit

 

History

547 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CINETRACKER

A social movie-tracking platform where users can log, rate, and share the films they've watched. CINETRACKER combines personal film statistics with community features and a gamified achievements system.


Features

Authentication & Security

  • Email/password sign-up with 6-digit email verification
  • JWT authentication via secure HTTP-only cookies
  • Password reset via email (1-hour token)
  • Google reCAPTCHA v3 on sign-up and password reset
  • Guest login for instant demo access without registration

Movie Management

  • Live TMDB search to add films to your library
  • 5-star personal rating and watch-date tracking
  • Edit or delete films (cascades to related posts & activity entries)

Custom Lists

  • Create and name personal film collections
  • Add or remove movies from any list

Social Features

  • Friend system: send, accept, decline, and remove friends via privacy-safe custom IDs (not internal MongoDB IDs)
  • Browse a friend's film library and activity feed

Posts & Reviews

  • Write film reviews with title, description, and rating
  • Like and comment on posts
  • Global and user-scoped post feed

Statistics

  • Total films watched, combined runtime, average rating
  • Best and worst films overall and by year
  • Genre distribution with percentage breakdown
  • Year-based filter across all stats

Achievements

  • Genre-based and quantity-based badges
  • Multi-tier difficulty levels
  • Unlock tracking with timestamps

Tech Stack

Layer Technology
Frontend React 18, Vite 6, Chakra UI 2, Zustand 5, React Router 7, Framer Motion
Backend Node.js, Express 4, MongoDB (Mongoose 8)
Auth JWT + HTTP-only cookies, bcryptjs
File Uploads Multer, Cloudinary SDK
Email Mailtrap
External APIs TMDB, OMDB, Google reCAPTCHA v3

Setup

Prerequisites

  • Node.js 18+
  • MongoDB Atlas account (or local MongoDB)
  • Accounts for: TMDB, OMDB, Mailtrap, Cloudinary, Google reCAPTCHA

Installation

# Clone the repository
git clone https://github.com/your-username/cinetracker.git
cd cinetracker

# Install backend dependencies
npm install

# Install frontend dependencies
npm install --prefix frontend

Environment Variables

Copy .env.example to .env and fill in your credentials:

cp .env.example .env
Variable Description
MONGO_URI MongoDB connection string
JWT_SECRET Strong random string for JWT signing
TMDB_API_KEY API key from themoviedb.org
OMDB_API_KEY API key from omdbapi.com
MAILTRAP_TOKEN Mailtrap API token for transactional emails
CLOUDINARY_* Cloudinary cloud name, API key, and secret
GOOGLE_WEBSITE_TOKEN reCAPTCHA v3 site key (public)
GOOGLE_SECRET_KEY reCAPTCHA v3 secret key (server-side only)
CLIENT_URL Frontend URL for CORS (e.g. http://localhost:5173)
PORT Backend port (default: 5000)

Running Locally

# Start backend (with nodemon)
npm run dev

# Start frontend (in a separate terminal)
cd frontend && npm run dev

Production Build

npm run build   # builds the frontend into /frontend/dist
npm run start   # serves frontend + API from Express

Project Structure

cinetracker/
├── backend/
│   ├── config/         # Database connection
│   ├── controllers/    # Route handlers
│   ├── mailtrap/       # Email templates & config
│   ├── middleware/     # Auth, reCAPTCHA, file validation
│   ├── models/         # Mongoose schemas
│   ├── routes/         # Express routers
│   └── server.js
├── frontend/
│   └── src/
│       ├── components/
│       ├── pages/
│       ├── store/      # Zustand stores
│       └── modules/
├── .env.example
└── package.json

Database

8 MongoDB collections: User, Movie, Post, Comment, Update, List, Achievement, UserAchievement


License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages