P
AboutProjectsProcessSkillsAchievementsResumeContactLeetCodeHire MeResume
P
← Back to Projects

CineScope

Full-stack movie platform with Gemini-powered recommendations, Redis caching, and versioned FastAPI services.

Live DemoBackendFrontend
CineScope preview

The Problem

Movie discovery is fragmented across search, reviews, and watchlists. Most experiences are either generic or limited to keyword matching.

The Solution

CineScope combines catalog discovery, semantic recommendations, watchlist workflows, and session security in one backend-first platform.

Conversational Discovery

Gemini Pro powers conversational recommendations with semantic matching across the catalog.

Caching First

Redis reduces repeated TMDB requests and improves responsiveness for high-frequency queries.

Versioned Data Layer

SQLAlchemy 2.0 models + Alembic migrations keep schema changes explicit and production-safe.

Secure Sessions

JWT refresh token rotation via Redis enables revocable, safer long-lived sessions.

Tech Stack

FastAPI
PostgreSQL
Redis
SQLAlchemy 2.0
Gemini Pro
Docker Compose
Next.js
Alembic
PyJWT

System Architecture

Next.js frontend
↓
FastAPI backend (versioned routes + OpenAPI)
↓
Redis cache layer
↓
TMDB fetch pipeline on cache miss
↓
Gemini recommendation layer
↓
PostgreSQL persistence (SQLAlchemy + Alembic)

Deployment: Backend deployed with Docker Compose on DigitalOcean, frontend on Vercel, API docs exposed through Swagger.

My Role & Contributions

  • •Designed and built the backend architecture with clean service boundaries, versioned APIs, and migration-first database changes.
  • •Integrated conversational recommendations using Gemini Pro and semantic search primitives over the movie catalog.
  • •Implemented Redis caching strategy to reduce external dependency pressure and improve repeat-query performance.
  • •Built secure auth flows using JWT refresh token rotation and Redis-managed session controls.
  • •Containerized deployment workflow to keep local and production environments reproducible and predictable.

Technical Challenge Solved

Challenge: External API limits and repeated calls

Without caching, popular queries repeatedly hit upstream APIs, increasing latency and operational risk during traffic spikes.

Solution: Read-through Redis caching

  1. Check Redis before every catalog lookup
  2. Serve cache hits immediately
  3. On miss, fetch from TMDB and write back with TTL
  4. Reuse cached payloads for repeated queries

Lower external dependency load, more stable response behavior, and better user-perceived speed.

Explore CineScope

Live in production. Try the demo or read the source code.

Try Live DemoView on GitHub