From 515fcd3163d310c8cf20a05f092687bcd6af0e25 Mon Sep 17 00:00:00 2001 From: elpatron Date: Tue, 19 Aug 2025 11:53:00 +0200 Subject: [PATCH] =?UTF-8?q?README=20f=C3=BCr=20Sysadmins=20und=20Entwickle?= =?UTF-8?q?r=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..15f18ec --- /dev/null +++ b/README.md @@ -0,0 +1,127 @@ +# Wordle‑Cheater (DE) + +Hilfs‑Web‑App für deutsche Wordle‑Rätsel. Nutzer geben bekannte Buchstaben/Positionen an, zusätzlich enthaltene und ausgeschlossene Buchstaben. Die App schlägt passende 5‑Buchstaben‑Wörter vor und zeigt die jeweilige Quelle (OT = OpenThesaurus, WF = wordfreq). + +## Features +- Filter nach Positionen (1–5), enthaltenen und ausgeschlossenen Buchstaben +- Deutsche Wortliste (nur 5 Buchstaben), aus OpenThesaurus und wordfreq gemerged +- Quellen‑Badges je Treffer (OT/WF) +- Zugängliche UI (A11y: Fieldset/Legend, ARIA‑Hinweise, Skip‑Link, semantische Liste) +- SEO‑Metas (Description, Canonical, Open Graph, Twitter) +- Docker‑Image mit Gunicorn + +## Projektstruktur +``` +app.py # Flask‑App +scripts/generate_wordlist.py # Generator für Wortliste + Quellen‑JSON +templates/index.html # UI (Jinja2‑Template) +static/favicon.svg # Favicon (SVG) +data/openthesaurus.txt # Quelle OpenThesaurus (Text) +data/words_de_5.txt # generierte Wortliste +data/words_de_5_sources.json # Wort→Quellen (ot/wf) +Dockerfile # Produktionsimage (Gunicorn) +requirements.txt # Python‑Abhängigkeiten +``` + +--- + +## Für Sysadmins (Betrieb) + +### Docker (empfohlen) +- Build: +```bash +docker build -t wordle-cheater . +``` +- Run (Port 8000): +```bash +docker run --rm -p 8000:8000 wordle-cheater +``` +- Health‑Check (lokal): `http://localhost:8000/` + +Hinweise: +- Das Image generiert die Wortliste beim Build. Wird `data/openthesaurus.txt` aktualisiert, Image neu bauen. +- Gunicorn startet mit 3 Worker (`gthread`, 2 Threads). Passen Sie Worker/Threads an Ihre CPU an. +- Hinter einem Reverse Proxy (z. B. Nginx) betreiben; Beispiel: +```nginx +location / { + proxy_pass http://127.0.0.1:8000; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; +} +``` + +### Ohne Docker (Service) +- Python 3.12 bereitstellen +- Virtuelle Umgebung erstellen, Abhängigkeiten installieren (siehe Entwickler‑Setup) +- Start per Gunicorn: +```bash +gunicorn -w 3 -k gthread --threads 2 -b 0.0.0.0:8000 app:app +``` + +--- + +## Für Entwickler (Setup & Workflow) + +### Voraussetzungen +- Python 3.12 +- Windows/PowerShell oder Linux/macOS Terminal + +### Lokale Installation +Windows PowerShell (Projektwurzel, `.venv`): +```powershell +python -m venv .venv +.\.venv\Scripts\python.exe -m pip install -r requirements.txt --disable-pip-version-check +``` +Linux/macOS: +```bash +python3 -m venv .venv +source .venv/bin/activate +pip install -r requirements.txt --disable-pip-version-check +``` + +### Wortliste generieren/aktualisieren +- Quelle: `data/openthesaurus.txt` (optional; wenn fehlt, wird nur wordfreq genutzt) +- Generator erzeugt: + - `data/words_de_5.txt` + - `data/words_de_5_sources.json` + +Windows PowerShell: +```powershell +.\.venv\Scripts\python.exe scripts\generate_wordlist.py +``` +Linux/macOS: +```bash +python scripts/generate_wordlist.py +``` + +### Entwicklung starten (Debug‑Server) +Windows PowerShell: +```powershell +.\.venv\Scripts\python.exe app.py +``` +Linux/macOS: +```bash +python app.py +``` +- Browser: `http://127.0.0.1:5000` + +### Docker während der Entwicklung +- Neu bauen, wenn sich `data/openthesaurus.txt` oder der Code ändert: +```bash +docker build -t wordle-cheater . && docker run --rm -p 8000:8000 wordle-cheater +``` + +### Coding‑Hinweise +- Nur 5‑Buchstaben‑Wörter werden berücksichtigt (Regex inkl. ä/ö/ü/ß) +- UI ist serverseitig gerendert (Jinja2) +- Bei jeder Anfrage wird die aktuelle Wortliste geladen; nach Generierung ist kein Neustart nötig + +### Bekannte Einschränkungen +- Deutsche Morphologie (Pluralbildung etc.) wird nicht generiert, nur was in den Quellen vorhanden ist +- Keine Benutzer‑Accounts, keine Persistenz über die Wortliste hinaus + +## Lizenz & Credits +- OpenThesaurus Daten gemäß deren Lizenz (siehe Kopf von `data/openthesaurus.txt`) +- wordfreq Python‑Paket gemäß dessen Lizenz +- Eigenes Projekt: (bitte ggf. Lizenz ergänzen)