A full-stack movie and TV show discovery platform with social features. Browse films, track what you've watched, rate and review content, and see what your friends are into.
Built with SvelteKit, Flask, MongoDB, and Redis, powered by the TMDB API.
/profile/<username>.cp .env.example .env
.env with your values:| Variable | Description |
|---|---|
JWT_SECRET |
Secret key used to sign JWT tokens. Use any random string for development. |
TMDB_API_KEY |
API key from TMDB. Required for movie/TV data. |
docker compose up
This builds and starts all services (frontend, backend, MongoDB, Redis) and seeds the database with sample data.
The backend drops and re-seeds the database on every restart - this is development-mode behavior.
| Variable | Location | Description |
|---|---|---|
USER_COUNT |
docker-compose.yml |
Number of fake users to generate on startup |
┌─────────────┐ REST API ┌──────────────┐ ┌───────────┐
│ SvelteKit │ ◄──────────────► │ Flask │ ◄──► │ MongoDB │
│ Frontend │ │ Backend │ └───────────┘
└─────────────┘ │ │ ┌───────────┐
│ │ ◄──► │ Redis │
│ │ │ (cache) │
│ │ └───────────┘
│ │ ┌───────────┐
│ │ ◄──► │ TMDB API │
└──────────────┘ └───────────┘
Each service runs in its own Docker container, orchestrated with Docker Compose.
/logs/faker_log.txt.The backend exposes the following route groups:
| Prefix | Description |
|---|---|
/auth |
Registration, login, account deletion |
/protected |
Authenticated user profile and token info |
/tmdb |
Movies, TV shows, people, search, recommendations (proxied from TMDB) |
/lists |
Watchlists, finished lists, favorite people — with ratings and reviews |
/friends |
Friend requests, friend list, friend profiles |
/info |
Health check, user lookup |
Full endpoint documentation is in API.md.
| Layer | Technology |
|---|---|
| Frontend | SvelteKit, TailwindCSS, Bits UI, Embla Carousel, Axios |
| Backend | Flask, PyJWT, Flask-PyMongo, Flask-APScheduler |
| Database | MongoDB |
| Cache | Redis |
| External API | TMDB |
| Infrastructure | Docker, Docker Compose |