190 lines
5.2 KiB
Markdown
190 lines
5.2 KiB
Markdown
# 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
|
||
- Enthaltene/Ausgeschlossene Buchstaben per Ein‑Zeichen‑Eingabe und „+“-Button hinzufügen
|
||
- Ausgewählte Buchstaben werden als Badges angezeigt, Klick entfernt den Buchstaben wieder
|
||
- Alphabetische Sortierung der ausgewählten Buchstaben (deutsche Locale)
|
||
- Drag‑and‑Drop: Buchstaben aus „Enthalten“ direkt auf die Felder `pos1`–`pos5` ziehen
|
||
- 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
|
||
|
||
## Demo
|
||
|
||
<p align="center">
|
||
<img src="./screenshot.png" alt="Desktop-Screenshot" width="49%" />
|
||
<img src="./screenshot-mobile.png" alt="Mobile-Screenshot" width="49%" />
|
||
</p>
|
||
|
||
Wordle-Cheater live bei [https://wh.elpatron.me](https://wh.elpatron.me).
|
||
|
||
|
||
## Projektstruktur
|
||
|
||
```text
|
||
wordle-helper/
|
||
├── 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)
|
||
│ ├── words_de_5.txt # generierte Wortliste
|
||
│ └── words_de_5_sources.json # Wort→Quellen (ot/wf)
|
||
├── Dockerfile # Produktionsimage (Gunicorn)
|
||
├── requirements.txt # Python‑Abhängigkeiten
|
||
|
||
```
|
||
|
||
## Für Sysadmins (Betrieb)
|
||
|
||
### Environment-Variablen
|
||
|
||
Für das Admin-Dashboard müssen folgende Variablen gesetzt werden:
|
||
|
||
```bash
|
||
# Flask Secret Key (für Sessions)
|
||
export FLASK_SECRET_KEY="your-super-secret-key-change-this-in-production"
|
||
|
||
# Admin-Passwort für das Statistik-Dashboard
|
||
export ADMIN_PASSWORD="your-secure-admin-password"
|
||
```
|
||
|
||
### 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/`
|
||
- Admin‑Dashboard: `http://localhost:8000/stats` (passwortgeschützt)
|
||
|
||
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
|
||
|
||
- Projektlizenz: MIT (siehe `LICENSE`)
|
||
- Datenquellen/Lizenzen:
|
||
- OpenThesaurus Daten gemäß deren Lizenz (siehe Kopf von `data/openthesaurus.txt`)
|
||
- wordfreq Python‑Paket gemäß dessen Lizenz
|