new file: .env.example

new file:   .gitignore
	new file:   Dockerfile
	new file:   README.md
	new file:   app.py
	new file:   app/__init__.py
	new file:   app/game.py
	new file:   app/models.py
	new file:   app/routes.py
	new file:   app/seed.py
	new file:   data/movies.json
	new file:   docker-compose.yml
	new file:   requirements.txt
	new file:   static/css/style.css
	new file:   static/js/game.js
	new file:   static/js/player.js
	new file:   templates/index.html
This commit is contained in:
SimolZimol
2026-08-07 20:48:08 +02:00
commit 526b0353e7
17 changed files with 2722 additions and 0 deletions

60
README.md Normal file
View File

@@ -0,0 +1,60 @@
# 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.json` befüllt (idempotent).
Neue Filme einfach als Einträge in `data/movies.json` ergänzen (alle 9 Attribute
inkl. Plattformen, FSK, Studio, Budget, Universum) und Werte müssen aus den
festen Listen in `app/seed.py` stammen.
## 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)