135 lines
4.4 KiB
Markdown
135 lines
4.4 KiB
Markdown
# Lara Kiesewetter – Live Schachturnier
|
||
|
||
Live-Überwachung von Lara Kiesewetters Partien bei der **ODJM (Offene Deutsche Jugendmeisterschaft)** 2026. Die App lädt automatisch PGN-Daten von der Deutschen Schachjugend, zeigt das aktuelle Spielbrett an und listet alle Partien von Lara.
|
||
|
||

|
||
|
||
## Features
|
||
|
||
- **Live-Brett** – Visuelle Darstellung der aktuellen Partie mit chessboard.js
|
||
- **Stockfish-Analyse** – Bewertungsbalken (Eval-Bar) mit Live-Score in Bauerneinheiten, powered by Stockfish-Engine
|
||
- **Spielerinfo** – Anzeige von Namen, ELO und Schachuhr beider Spieler
|
||
- **Zugliste** – Alle Züge der aktuellen Partie mit Klick-Navigation und Pfeiltasten-Steuerung
|
||
- **Alle Partien** – Übersicht aller Runden mit Lara; Klick zum Wechseln
|
||
- **Live-Erkennung** – Automatische Erkennung laufender (unterminierter) Partien
|
||
- **Turniertabelle** – Tabellenplatz, Punkte, Siege/Unentschieden/Niederlagen von Lara
|
||
- **Auto-Refresh** – Aktualisiert die Daten alle 15 Sekunden (nur aktuelle Runden)
|
||
- **Proxy-Server** – Lokaler Python-Server mit Stockfish-Engine-Wrapper, PGN-Proxy und statischem File-Serving
|
||
|
||
## Projektstruktur
|
||
|
||
```text
|
||
├── index.html # HTML-Grundgerüst
|
||
├── style.css # Dark-Theme-Styling (responsive)
|
||
├── js/
|
||
│ ├── app.js # Hauptlogik (Brett, UI, Auto-Refresh, Eval-Bar)
|
||
│ └── pgn-parser.js # PGN-Parser (Header + Züge extrahieren)
|
||
├── server.py # Lokaler Proxy-Server + Stockfish-Engine (Python 3)
|
||
├── cache/ # PGN- und Standings-Cache
|
||
└── stockfish.exe # Stockfish-Schachengine (Windows)
|
||
```
|
||
|
||
## Setup
|
||
|
||
### Voraussetzungen
|
||
|
||
- **Python 3.6+** für den Proxy-Server
|
||
- **Stockfish** (optional, für Analyse) – auf Windows: `stockfish.exe` im Projektverzeichnis
|
||
- **Browser** (Chrome, Firefox, Edge)
|
||
|
||
### Installation & Start
|
||
|
||
1. **Proxy-Server starten:**
|
||
```bash
|
||
python server.py
|
||
```
|
||
Der Server läuft auf `http://localhost:8111`.
|
||
|
||
2. **Öffne die App im Browser:**
|
||
```text
|
||
http://localhost:8111
|
||
```
|
||
(Der Server serviert auch die statischen Dateien.)
|
||
|
||
## Technik
|
||
|
||
| Komponente | Technologie |
|
||
| ------------------ | ------------------------------------------------------------ |
|
||
| Schachbrett | [chessboard.js](https://github.com/oakmac/chessboardjs) |
|
||
| Schachlogik | [chess.js](https://github.com/jhlywa/chess.js) |
|
||
| Stockfish-Analyse | Stockfish Engine (lokal, via POST `/evaluate`) |
|
||
| UI | HTML, CSS, Vanilla JS, jQuery |
|
||
| Proxy-Server | Python http.server (subprocess, threading, NDJSON-Streaming) |
|
||
| PGN-Quelle | deutsche-schachjugend.de (ODJM 2026) |
|
||
|
||
## Deployment
|
||
|
||
Die Anwendung kann als eigenständiger Server betrieben werden.
|
||
|
||
### Produktivbetrieb (systemd – Linux)
|
||
|
||
```bash
|
||
# Service-Datei erstellen
|
||
sudo tee /etc/systemd/system/lara-chess.service <<EOF
|
||
[Unit]
|
||
Description=Lara Kiesewetter Live Schachturnier
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=www-data
|
||
WorkingDirectory=/opt/lara-chess
|
||
ExecStart=/usr/bin/python3 /opt/lara-chess/server.py
|
||
Restart=always
|
||
RestartSec=10
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
EOF
|
||
|
||
# Aktivieren und starten
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable --now lara-chess
|
||
```
|
||
|
||
Die App läuft dann auf `http://SERVER_IP:8111`.
|
||
|
||
### Docker
|
||
|
||
```dockerfile
|
||
# Dockerfile
|
||
FROM python:3-slim
|
||
WORKDIR /app
|
||
COPY . .
|
||
EXPOSE 8111
|
||
CMD ["python", "server.py"]
|
||
```
|
||
|
||
```bash
|
||
docker build -t lara-chess .
|
||
docker run -d --name lara-chess -p 8111:8111 --restart unless-stopped lara-chess
|
||
```
|
||
|
||
### Reverse Proxy (nginx)
|
||
|
||
```nginx
|
||
server {
|
||
listen 80;
|
||
server_name chess.example.com;
|
||
|
||
location / {
|
||
proxy_pass http://127.0.0.1:8111;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
}
|
||
}
|
||
```
|
||
|
||
### Umgebungsvariablen (optional)
|
||
|
||
| Variable | Default | Beschreibung |
|
||
| ------------------- | ------------------------------ | ------------------------------- |
|
||
| `PORT` | `8111` | Server-Port |
|
||
| `STOCKFISH_PATH` | `stockfish.exe` / `stockfish` | Pfad zur Stockfish-Engine |
|
||
| `STOCKFISH_DEPTH` | `25` | Stockfish-Suchtiefe |
|