Files
lara-schach-live/README.md

135 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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.

# 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.
![Screenshot](screenshot.png)
## 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 30 Sekunden
- **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 |