Files
wordle-cheater/README.md

190 lines
5.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

# WordleCheater (DE)
HilfsWebApp für deutsche WordleRätsel. Nutzer geben bekannte Buchstaben/Positionen an, zusätzlich enthaltene und ausgeschlossene Buchstaben. Die App schlägt passende 5BuchstabenWörter vor und zeigt die jeweilige Quelle (OT = OpenThesaurus, WF = wordfreq).
## Features
- Filter nach Positionen (15), enthaltenen und ausgeschlossenen Buchstaben
- Enthaltene/Ausgeschlossene Buchstaben per EinZeichenEingabe und „+“-Button hinzufügen
- Ausgewählte Buchstaben werden als Badges angezeigt, Klick entfernt den Buchstaben wieder
- Alphabetische Sortierung der ausgewählten Buchstaben (deutsche Locale)
- DragandDrop: Buchstaben aus „Enthalten“ direkt auf die Felder `pos1``pos5` ziehen
- Deutsche Wortliste (nur 5 Buchstaben), aus OpenThesaurus und wordfreq gemerged
- QuellenBadges je Treffer (OT/WF)
- Zugängliche UI (A11y: Fieldset/Legend, ARIAHinweise, SkipLink, semantische Liste)
- SEOMetas (Description, Canonical, Open Graph, Twitter)
- DockerImage 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 # FlaskApp
├── scripts/
│ └── generate_wordlist.py # Generator für Wortliste + QuellenJSON
├── templates/
│ └── index.html # UI (Jinja2Template)
├── 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 # PythonAbhä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
```
- HealthCheck (lokal): `http://localhost:8000/`
- AdminDashboard: `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 EntwicklerSetup)
- 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 (DebugServer)
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
```
### CodingHinweise
- Nur 5BuchstabenWö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 BenutzerAccounts, 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 PythonPaket gemäß dessen Lizenz