Files
filmdle/README.md
SimolZimol 7c271d3946 modified: README.md
modified:   app/seed.py
	deleted:    data/movies.json
	new file:   data/movies/1922.json
	new file:   data/movies/1927.json
	new file:   data/movies/1933.json
	new file:   data/movies/1939.json
	new file:   data/movies/1941.json
	new file:   data/movies/1942.json
	new file:   data/movies/1949.json
	new file:   data/movies/1950.json
	new file:   data/movies/1952.json
	new file:   data/movies/1954.json
	new file:   data/movies/1956.json
	new file:   data/movies/1957.json
	new file:   data/movies/1958.json
	new file:   data/movies/1959.json
	new file:   data/movies/1960.json
	new file:   data/movies/1961.json
	new file:   data/movies/1962.json
	new file:   data/movies/1964.json
	new file:   data/movies/1965.json
	new file:   data/movies/1967.json
	new file:   data/movies/1968.json
	new file:   data/movies/1969.json
	new file:   data/movies/1971.json
	new file:   data/movies/1972.json
	new file:   data/movies/1973.json
	new file:   data/movies/1974.json
	new file:   data/movies/1975.json
	new file:   data/movies/1976.json
	new file:   data/movies/1977.json
	new file:   data/movies/1978.json
	new file:   data/movies/1979.json
	new file:   data/movies/1980.json
	new file:   data/movies/1981.json
	new file:   data/movies/1982.json
	new file:   data/movies/1983.json
	new file:   data/movies/1984.json
	new file:   data/movies/1985.json
	new file:   data/movies/1986.json
	new file:   data/movies/1987.json
	new file:   data/movies/1988.json
	new file:   data/movies/1989.json
	new file:   data/movies/1990.json
	new file:   data/movies/1991.json
	new file:   data/movies/1992.json
	new file:   data/movies/1993.json
	new file:   data/movies/1994.json
	new file:   data/movies/1995.json
	new file:   data/movies/1996.json
	new file:   data/movies/1997.json
	new file:   data/movies/1998.json
	new file:   data/movies/1999.json
	new file:   data/movies/2000.json
	new file:   data/movies/2001.json
	new file:   data/movies/2002.json
	new file:   data/movies/2003.json
	new file:   data/movies/2004.json
	new file:   data/movies/2005.json
	new file:   data/movies/2006.json
	new file:   data/movies/2007.json
	new file:   data/movies/2008.json
	new file:   data/movies/2009.json
	new file:   data/movies/2010.json
	new file:   data/movies/2011.json
	new file:   data/movies/2012.json
	new file:   data/movies/2013.json
	new file:   data/movies/2014.json
	new file:   data/movies/2015.json
	new file:   data/movies/2016.json
	new file:   data/movies/2017.json
	new file:   data/movies/2018.json
	new file:   data/movies/2019.json
	new file:   data/movies/2020.json
	new file:   data/movies/2021.json
	new file:   data/movies/2022.json
	new file:   data/movies/2023.json
	new file:   data/movies/2024.json
2026-08-07 22:53:38 +02:00

66 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/<JAHR>.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)