CineGraph is a comprehensive, full-stack movie discovery platform. It provides users with an immersive experience for exploring films, cast, and crew, while offering highly personalized movie recommendations powered by a hybrid architecture of traditional relational data and graph-based machine learning.
The project is split into three core microservices:
- Frontend Client (
/Client/Movie reviews): A modern, responsive React application built with Vite and Tailwind CSS. - Primary API Server (
/server/movie_server): A high-performance Go backend that manages core business logic, user authentication, and movie data serving. - Recommendation Engine (
/server/recommendation_server): A specialized Python microservice leveraging Neo4j and Natural Language Processing (NLP) to generate intelligent, context-aware movie recommendations.
- Comprehensive Movie Details: View deep metadata including synopsis, budget, revenue, runtime, release date, and original language.
- Rich Media: Integrated YouTube facade for watching official trailers, behind-the-scenes footage, and cast interviews.
- Cast & Crew Insights: Detailed sections for top cast and key crew members (directors, writers, producers). Navigate to individual person pages for full filmographies.
- Production Context: Explore movies by production companies, spoken languages, and production countries.
- Collections: Track movies that belong to a broader franchise or collection.
- Authentication: Secure JWT-based user registration and login.
- Watchlist & History: Users can mark movies as "Watched" or remove them from their history.
- Rating System: Interactive 10-star rating UI. Ratings influence the personalized recommendation engine.
- Favorite Genres: Users can select favorite genres to tailor their default recommendations.
- Dynamic User Tagging: Real-time interest tracking using Redis and Lua scripting. User interactions (watches, ratings) organically boost or penalize genre tags with an exponential time decay model, ensuring recommendations reflect current tastes.
The Python recommendation server uses a Neo4j graph database combined with advanced mathematical modeling to provide multi-layered, hyper-personalized recommendations:
- TOPSIS Algorithm & Cosine Similarity: Employs the Technique for Order of Preference by Similarity to Ideal Solution (TOPSIS). It calculates Cosine Similarity across positive and negative user tags, combined with a weighted crew score (valuing directors and lead actors), to precisely rank movies based on relative closeness to the user's ideal preference.
- Fallback Mechanisms:
- If a user lacks sufficient watch history or active tags, recommendations seamlessly default to movies matching their pre-selected favorite genres.
- If no preferences are set, the system surfaces globally popular and trending movies.
- NLP Integration: Utilizes
sentence-transformersfor semantic similarity matching during data ingestion and advanced querying.
- Dark Mode Aesthetic: A sleek, cinematic dark theme utilizing
zincandrosecolor palettes. - Micro-animations: Smooth hover effects, backdrop gradients, and transition animations for a premium feel.
- Responsive Layouts: Fully responsive grid systems and components optimized for both desktop and mobile viewing.
- Refined Navigation: Enhanced user flows with components like a floating Scroll-to-Top button and dynamic, data-rich movie cards.
| Layer | Technologies |
|---|---|
| Frontend | React 19, Vite, TypeScript, Redux Toolkit, React Router v7, Tailwind CSS, shadcn/ui |
| Primary Backend | Go 1.24, Gin Web Framework, JWT Auth, LangChainGo, Redis |
| Recommendation Engine | Python, FastAPI, Uvicorn, sentence-transformers |
| Databases | MongoDB, Neo4j, Redis (for real-time tag decay) |
- Node.js & npm (for the React Client)
- Go 1.24+ (for the Movie Server)
- Python 3.x (for the Recommendation Server)
- MongoDB (Local or Atlas instance)
- Neo4j (Local Desktop or AuraDB instance)
- Redis (Local or Cloud instance for user tags)
cd server/movie_server
# Copy the example environment file and configure it with your MongoDB URI and JWT secrets
cp .env.example .env
# Download dependencies
go mod download
# Run the server on default port 8000
go run main.gocd server/recommendation_server
# Create a virtual environment
python -m venv venv
# Activate the virtual environment
source venv/bin/activate # On Windows use: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Set up environment variables (.env) for Neo4j and MongoDB URIs
# Run the FastAPI server on port 8001
uvicorn main:app --reload --port 8001cd "Client/Movie reviews"
# Install dependencies
npm install
# Run the development server
npm run dev
