README.md aktualisiert

This commit is contained in:
MLH
2025-04-07 00:53:48 +02:00
parent 4ef6a34619
commit 3bf2aae1a3

100
README.md
View File

@ -1,2 +1,100 @@
# TTurnier
# TTurnier - Tischtennis-Turnierverwaltung
## 1. Allgemeine Beschreibung
Diese Anwendung dient der Verwaltung von Tischtennisturnieren und der Bereitstellung von Live-Ergebnissen für Zuschauer. Sie ist als Node.js-Anwendung mit einem Express-Backend und einer PostgreSQL-Datenbank konzipiert.
**Benutzeroberflächen:**
* **Admin-Oberfläche:** Verwaltung von Turnieren, Spielern, Ergebnissen, Benutzern und Statistiken.
* **Schiedsrichter-Oberfläche:** Eintragen von Spielergebnissen.
* **Zuschauer-Oberfläche:** Anzeige von Live-Ergebnissen, Turnierplänen und Statistiken.
## 2. Voraussetzungen
* [Node.js](https://nodejs.org/) (Version 18.x oder höher empfohlen)
* [npm](https://www.npmjs.com/) (wird mit Node.js installiert)
* Eine laufende [PostgreSQL](https://www.postgresql.org/) Datenbank (z. B. über Docker: `docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres`)
* [OpenSSL](https://www.openssl.org/) (normalerweise auf Linux/macOS vorinstalliert, für Windows separat installieren) zum Generieren des selbstsignierten HTTPS-Zertifikats.
## 3. Installation
1. **Klone das Repository:**
```bash
git clone <repository-url>
cd tischtennis-turnierverwaltung
```
2. **Installiere die Abhängigkeiten:**
```bash
npm install
```
3. **Konfiguration:**
* Kopiere die `.env.example`-Datei nach `.env`:
```bash
cp .env.example .env
```
* Bearbeite die `.env`-Datei und trage deine Datenbank-Verbindungsdaten und einen sicheren JWT-Schlüssel ein:
```dotenv
DATABASE_URL=postgresql://<db_user>:<db_password>@<db_host>:<db_port>/<db_name>
JWT_SECRET=DEIN_SEHR_SICHERER_GEHEIMER_SCHLUESSEL_HIER # Ändere dies unbedingt!
PORT=3000
# Optional: Konfiguration für automatische Backups (Pfad und Intervall)
# BACKUP_PATH=/pfad/zu/backups
# BACKUP_INTERVAL_MINUTES=60
```
*Ersetze `<db_user>`, `<db_password>`, `<db_host>`, `<db_port>`, `<db_name>` mit deinen PostgreSQL-Daten.*
*Standard für den Docker-Befehl oben: `postgresql://postgres:mysecretpassword@localhost:5432/postgres` (ggf. musst du die Datenbank 'postgres' erst manuell erstellen oder einen anderen Namen wählen).*
4. **Generiere ein selbstsigniertes HTTPS-Zertifikat:**
* Führe das mitgelieferte Skript aus (oder führe die openssl-Befehle manuell aus):
```bash
npm run generate-cert
```
* Dies erstellt `key.pem` und `cert.pem` im Hauptverzeichnis. **Hinweis:** Browser werden diesem Zertifikat nicht vertrauen und eine Warnung anzeigen. Für Produktionsumgebungen solltest du ein Zertifikat von einer anerkannten Zertifizierungsstelle (z. B. Let's Encrypt) verwenden, oft in Kombination mit einem Reverse Proxy wie Nginx.
## 4. Datenbank-Initialisierung
Die Anwendung versucht beim Start automatisch, die notwendigen Tabellen zu erstellen, falls sie noch nicht existieren. Das Skript `src/db/init.sql` enthält die `CREATE TABLE`-Anweisungen. Stelle sicher, dass der in `.env` konfigurierte Datenbankbenutzer die Berechtigung hat, Tabellen zu erstellen.
## 5. Anwendung starten
1. **Entwicklungsmodus (mit automatischer Neuladung bei Änderungen):**
```bash
npm run dev
```
2. **Produktionsmodus:**
```bash
npm start
```
Die Anwendung läuft standardmäßig unter `https://localhost:3000`.
## 6. Verwendung
* **Admin-Oberfläche:** `https://localhost:3000/admin.html`
* **Schiedsrichter-Oberfläche:** `https://localhost:3000/referee.html`
* **Zuschauer-Oberfläche:** `https://localhost:3000/spectator.html`
**Erster Admin-Benutzer:**
Beim ersten Start wird automatisch ein Admin-Benutzer angelegt, wenn noch keine Benutzer in der Datenbank existieren. Die Standard-Zugangsdaten sind:
* **Benutzername:** `admin`
* **Passwort:** `password`
**Ändere dieses Passwort sofort nach dem ersten Login über die (noch zu implementierende) Benutzerverwaltung!**
## 7. API Endpunkte (Beispiele)
* `POST /api/auth/register` - Registriert einen neuen Benutzer (initial nur Admin möglich, später eingeschränkt).
* `POST /api/auth/login` - Loggt einen Benutzer ein und gibt ein JWT zurück.
* `GET /api/tournaments` - Holt alle Turniere (Authentifizierung erforderlich).
* `POST /api/tournaments` - Erstellt ein neues Turnier (Admin erforderlich).
* `GET /api/tournaments/:id` - Holt ein spezifisches Turnier (Authentifizierung erforderlich).
* `PUT /api/tournaments/:id` - Aktualisiert ein Turnier (Admin erforderlich).
* `DELETE /api/tournaments/:id` - Löscht ein Turnier (Admin erforderlich).
* *(Weitere Endpunkte für Spieler, Matches, etc. folgen dem gleichen Muster)*
## 8. Wichtige Hinweise
* **Sicherheit:** Die Standard-Admin-Zugangsdaten sind unsicher. Das JWT-Secret in `.env` muss geheim gehalten werden. Das selbstsignierte Zertifikat bietet Verschlüsselung, aber keine Verifizierung der Identität des Servers.
* **Datenbank-Backups:** Die Implementierung automatischer Backups über `node-cron` und `pg_dump` ist angedeutet, aber die genaue Konfiguration (Pfad, Berechtigungen, Fehlerbehandlung) muss an die Serverumgebung angepasst werden. Es ist oft zuverlässiger, dies über System-Cron-Jobs zu lösen.
* **Funktionsumfang:** Dies ist eine Basisimplementierung. Viele der in der ursprünglichen Anfrage genannten Features (PDF, CSV, Push-Benachrichtigungen, detaillierte Statistiken, Turnierbaum-Logik) sind noch nicht implementiert.