2026-05-25 00:55:16 +02:00
2026-05-25 00:55:16 +02:00

🏆 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

Features

  • Live-Brett Visuelle Darstellung der aktuellen Partie mit chessboard.js
  • Spielerinfo Anzeige von Namen, ELO und Schachuhr beider Spieler
  • Zugliste Alle Züge der aktuellen Partie mit Klick-Navigation
  • Alle Partien Übersicht aller Runden mit Lara; Klick zum Wechseln
  • Live-Erkennung Automatische Erkennung laufender (unterminierter) Partien
  • Auto-Refresh Aktualisiert die Daten alle 60 Sekunden
  • Proxy-Server Lokaler Python-Server mit PGN-Caching und CORS-Unterstützung

Projektstruktur

├── app.js              # Hauptlogik (Brett, UI, Auto-Refresh)
├── index.html          # HTML-Grundgerüst
├── style.css           # Dark-Theme-Styling
├── pgn-parser.js       # PGN-Parser (Header + Züge extrahieren)
├── server.py           # Lokaler Proxy-Server (Python 3)
├── cache/              # PGN-Cache (wird automatisch angelegt)
└── lara-chess/         # (optional  reserviert für Erweiterungen)

Setup

Voraussetzungen

  • Python 3.6+ für den Proxy-Server
  • Browser (Chrome, Firefox, Edge)

Installation & Start

  1. Proxy-Server starten:

    python server.py
    

    Der Server läuft auf http://localhost:8111.

  2. Öffne die App im Browser:

    http://localhost:8111
    

    (Der Server serviert auch die statischen Dateien.)

Ohne Proxy (direkter Dateizugriff)

Öffne index.html direkt im Browser. Hinweis: Der CORS-Proxy (server.py) muss trotzdem laufen, da der PGN-Endpunkt keine CORS-Header setzt.

Technik

Komponente Technologie
Schachbrett chessboard.js
Schachlogik chess.js
UI HTML, CSS, Vanilla JS
Proxy-Server Python http.server (ohne externe Abhängigkeiten)
PGN-Quelle deutsche-schachjugend.de (ODJM 2026)

Deployment

Die Anwendung kann als eigenständiger Server betrieben werden.

Produktivbetrieb (systemd Linux)

# 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
FROM python:3-slim
WORKDIR /app
COPY . .
EXPOSE 8111
CMD ["python", "server.py"]
docker build -t lara-chess .
docker run -d --name lara-chess -p 8111:8111 --restart unless-stopped lara-chess

Reverse Proxy (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)

In server.py können Port und PGN-URL über Umgebungsvariablen überschrieben werden:

Variable Default Beschreibung
PORT 8111 Server-Port
PGN_URL (siehe server.py) Quelle der PGN-Daten
CACHE_TTL 30 Cache-Gültigkeit in Sekunden

Konfiguration

Die wichtigsten Konstanten in app.js:

const PGN_URL        = 'https://www.deutsche-schachjugend.de/2026/odjm-d/partien/gesamt-utf8.pgn';
const REFRESH_INTERVAL = 60000;  // Auto-Refresh alle 60s
const PLAYER_NAME    = 'Kiesewetter, Lara';

Im server.py lässt sich der Cache-TTL anpassen:

CACHE_TTL = 30  # Sekunden
Description
No description provided
Readme 631 KiB
Languages
JavaScript 52.7%
Python 19%
CSS 17.8%
HTML 10.5%