# SynCiné developer wiki Welcome! This wiki is for developers who want to understand, run and improve SynCiné. SynCiné is a self-hosted PWA for film lovers: it brings together TMDB, Trakt, JustWatch, Plex, Letterboxd, Seerr and local cinema showtimes, keeps your watchlist in sync across services and suggests what to watch. It is a FastAPI + SQLite backend and a React 18 + Vite + Tailwind v4 frontend, shipped as a single Docker image. For the product overview, installation and user settings, start with the main [README](../../README.en.md). This wiki covers how the code works. ## Pages | # | Page | What you will find | |---|---|---| | 1 | [Architecture](01-architecture.md) | The big picture: one container, API + SPA, SQLite, scheduler, cache, PWA | | 2 | [Development setup](02-dev-setup.md) | Running backend and frontend locally, environment variables, tests, Docker build | | 3 | [Backend](03-backend.md) | Layout of `backend/app`, request flow, error handling, adding an endpoint | | 4 | [Frontend](04-frontend.md) | Layout of `frontend/src`, TanStack Query, Zustand, auth gate, navigation, styling, adding a page | | 5 | [Data model](05-data-model.md) | SQLAlchemy models, automatic per-user scoping, lightweight migrations | | 6 | [Accounts and security](06-accounts-and-security.md) | Editions, sessions, passwords, rate limiting, Plex login, CSRF, CSP, SSRF | | 7 | [Sync engine](07-sync-engine.md) | How watchlists, watched titles and ratings are merged and synced both ways | | 8 | [Integrations](08-integrations.md) | Every external service client: purpose, auth, caching, official or not | | 9 | [Internationalisation](09-i18n.md) | French keys, English dictionaries, `useT()` / `t()`, adding a language | | 10 | [Testing](10-testing.md) | The pytest suite, fakes and fixtures, frontend checks, CI | | 11 | [Release and deploy](11-release-and-deploy.md) | Versioning, image publishing, Unraid template, reverse proxy, Dependabot | | 12 | [Contributing](12-contributing.md) | Issues, pull requests, code style, commit messages, security, license, credits | ## Quick orientation ```mermaid flowchart LR A["frontend/src
React SPA"] -->|"fetch /api/*"| B["backend/app
FastAPI"] B --> C[("SQLite
data/cinesync.db")] B --> D["External services
TMDB, Trakt, Plex…"] ``` - New here? Read [Architecture](01-architecture.md), then [Development setup](02-dev-setup.md). - Fixing a sync bug? Go to [Sync engine](07-sync-engine.md) and [Testing](10-testing.md). - Adding a feature end to end? [Backend](03-backend.md) → [Frontend](04-frontend.md) → [Internationalisation](09-i18n.md). ## A note on language The code comments and the server's user-facing messages are in **French**: that is the project's existing convention. The interface is translated to English on the client side (see [Internationalisation](09-i18n.md)). This wiki is in English. ## See also - [README (English)](../../README.en.md) and [README (Français)](../../README.md) - [SECURITY.md](../../SECURITY.md) - [LICENSE](../../LICENSE) (GNU AGPL-3.0)