# Filmdle – Film-Quiz Ein "Rate den Film anhand seiner Eigenschaften"-Quiz, inspiriert von Gamedle's *Guess*. Du bekommst einen geheimen Zielfilm und tippst ueber eine Suchleiste (mit Autocomplete). Jeder Tipp zeigt eine Zeile mit 9 Spalten, die farblich zeigen, wie nah du dran bist (grün = passt, gelb = teilweise, rot = passt nicht). Bei Jahr und Budget zeigen die Pfeile ▲/▼ an, ob dein Tipp zu früh oder zu spät liegt. ## Modi - **Täglich**: Derselbe Film für alle pro Tag (wird um 09:00 UTC gewechselt). - **Unbegrenzt**: Zufälliger Film pro Runde, so oft du willst. Für beide Modi werden getrennte Sieg- und Niederlagen-Str eaks gespeichert (pro Spielername, in PostgreSQL). ## Technologie - Flask + SQLAlchemy (PostgreSQL) - Gunicorn im Docker-Container, lauffähig auf Coolify ## Lokale Entwicklung Voraussetzung: Python 3.11+, Docker (für Postgres). ```bash # 1. Postgres starten docker compose up -d db # 2. Python venv + Abhängigkeiten python -m venv .venv .venv\Scripts\activate # Windows pip install -r requirements.txt # 3. Umgebungsvariablen (lokal) copy .env.example .env # Werte anpassen (DB_USER/DB_PASSWORD/DB_DATABASE = filmdle) # 4. App starten (laden der .env wird automatisch via python-dotenv) python app.py ``` Die App läuft dann auf http://localhost:8000 ## Datenbank-Schema Die Tabellen werden beim ersten Start automatisch angelegt und mit den festen Referenzlisten (Plattformen, Genres, Studios, Universen) sowie den Filmen aus `data/movies/` befüllt (idempotent). Die Filme sind pro Jahr in je einer Datei gespeichert, z.B. `data/movies/1997.json` oder `data/movies/2024.json`. Jede Datei enthält ein Array mit allen Filmen dieses Jahres. Neue Filme einfach in die passende Jahres-Datei ergänzen (alle 9 Attribute inkl. Plattformen, FSK, Studio, Budget, Universum) und Werte müssen aus den festen Listen in `app/seed.py` stammen. Existiert für das Jahr noch keine Datei, einfach eine neue Datei `data/movies/.json` anlegen. ## Deployment auf Coolify 1. Repo in Coolify einbinden. 2. Build-Pack: `Dockerfile` verwenden. 3. Eine PostgreSQL-Ressource anlegen und folgende Umgebungsvariablen setzen: - `DB_HOST`, `DB_PORT`, `DB_USER`, `DB_PASSWORD`, `DB_DATABASE` - `SECRET_KEY` (langer Zufallswert) - `MAX_ATTEMPTS` (optional, Standard 10) - `DAILY_RESET_UTC` (optional, Standard 9 = 09:00 UTC)