mirror of
https://github.com/guyg1474/hcrb.git
synced 2026-10-15 23:13:28 +02:00
Spiel-Events, Kalenderdateien, Patches-Seite und neues Design
- Kalender: Termine als Spiel-Event markieren (nur diese zählen in der Statistik), optionale Uhrzeiten, Termine bearbeiten - .ics-Download für einzelne und alle kommenden Termine - Neue Seite Patches: Upload (PNG, JPEG, WebP, geprüftes SVG), Status "Gibt es schon" / "In Planung", Bilder in data/patches/ - Volle Seitenbreite mit Spaltenlayouts, neues Design mit selbst gehosteten Schriften, Startseite mit Zoom und drehendem Zahnrad - Bestehende Daten werden beim Laden ergänzt, keine Migration nötig Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
43356a120c
commit
486e6f6784
23 files changed
+1757
-387
No files matched your search
@@ -21,8 +21,11 @@ Anderen Port wählen: `PORT=8080 npm start`.
|
||||
|
||||
## Seiten
|
||||
|
||||
- **Start** (`/`) – Startseite mit Platzhaltertext, Links zu Kalender und Fahrtplaner, nächste Spieltage.
|
||||
- **Kalender** (`/kalender`) – Mitglieder wählen „Ich bin …“, tragen Spieltage ein und sagen zu oder ab.
|
||||
- **Start** (`/`) – Startseite mit Flagge, die beim Scrollen heranzoomt, nächstem Spiel samt Countdown,
|
||||
Links zu allen Bereichen, neuesten Patches, nächsten Terminen und „Pile of Shame“.
|
||||
- **Kalender** (`/kalender`) – Mitglieder wählen „Ich bin …“, tragen Termine ein (optional mit Beginn und Ende), bearbeiten sie und sagen zu oder ab.
|
||||
Pro Termin wird angekreuzt, ob es ein **Spiel-Event** ist – nur diese zählen in der Statistik (Treffen, Grillen usw. nicht).
|
||||
Einzelne Termine oder alle kommenden lassen sich als `.ics`-Datei für Google, Apple oder Outlook herunterladen.
|
||||
Über „Fahrt planen“ geht es direkt in den Fahrtplaner, alle Zusagen sind dann schon als „kommt mit“ ausgewählt.
|
||||
- **Fahrtplaner** (`/fahrt`) – Treffpunkt, Abfahrt (Standard 07:00) und Treffzeit (15 min vorher) festlegen – nach der Berechnung pro Auto änderbar, Mitfahrer auswählen
|
||||
und pro Fahrt angeben, wer sein Auto dabei hat. Wer immer mit eigenem Auto kommt, fährt immer selbst und bekommt zuerst Mitfahrer.
|
||||
@@ -30,17 +33,22 @@ Anderen Port wählen: `PORT=8080 npm start`.
|
||||
Unter „Feste Zuteilung“ lässt sich vorab festlegen, wer diesmal sicher bei wem mitfährt, Gäste nur für diese Fahrt hinzufügen, Fahrgemeinschaften berechnen,
|
||||
Ergebnis kopieren oder drucken. „Eingabe zurücksetzen“ leert alles für die nächste Planung.
|
||||
- **Statistik** (`/statistik`, öffentlich) – wie oft jedes Mitglied (ohne Externe) im laufenden Jahr gespielt hat:
|
||||
Spieltage mit Zusage aus dem Kalender plus manuelle Korrektur (− / +, nur angemeldet), z. B. für spontane Fahrten.
|
||||
Spiel-Events mit Zusage aus dem Kalender plus manuelle Korrektur (− / +, nur angemeldet), z. B. für spontane Fahrten.
|
||||
Zu Neujahr wird der Endstand des Vorjahres archiviert (im Jahresmenü abrufbar) und die Zählung beginnt bei 0.
|
||||
Die Startseite zeigt als „Pile of Shame“, wer im laufenden Jahr noch nicht spielen war.
|
||||
Der Jahreswechsel richtet sich nach der Zeitzone des Servers (im systemd-Dienst `Environment=TZ=Europe/Berlin` setzen).
|
||||
- **Patches** (`/patches`, öffentlich) – Galerie der Gruppen- und Event-Patches, getrennt nach „Gibt es schon“ und „In Planung“.
|
||||
Angemeldet: Patch hochladen (PNG, JPEG oder WebP – wird im Browser auf max. 1600 px verkleinert – oder SVG bis 2 MB),
|
||||
bearbeiten, löschen. SVGs mit Skripten, Ereignis-Attributen oder Verweisen auf fremde Dateien werden abgelehnt
|
||||
und zusätzlich mit einer Content-Security-Policy ausgeliefert.
|
||||
Die Bilder liegen in `data/patches/` und sind damit im Docker-Volume und im Backup enthalten.
|
||||
- **Gruppe** (`/gruppe`) – feste Mitglieder (Vorname, extern ja/nein, Auto ja/nein, freie Plätze ohne Fahrer, „kommt immer mit eigenem Auto“,
|
||||
Standard-Treffpunkt als Fahrer, „fährt am liebsten mit bei …“) und Treffpunkte (Name, Adresse) verwalten, Export/Import der Mitglieder als JSON.
|
||||
|
||||
## Login
|
||||
|
||||
Öffentlich sind nur die Startseite (inkl. der nächsten 3 Spieltage: Datum, Titel, Anzahl Zusagen) und die Statistik
|
||||
(Namen und Anzahl gespielter Spieltage).
|
||||
Öffentlich sind nur die Startseite (inkl. der nächsten 3 Termine: Datum, Uhrzeit, Titel, Anzahl Zusagen), die Statistik
|
||||
(Namen und Anzahl gespielter Spieltage) und die Patches.
|
||||
Kalender, Fahrtplaner, Gruppe und die komplette API sind nur nach dem Anmelden erreichbar.
|
||||
|
||||
Benutzer werden auf dem Server per Kommandozeile verwaltet:
|
||||
@@ -63,11 +71,11 @@ Sicherheit:
|
||||
## Aufbau
|
||||
|
||||
```
|
||||
server.js Express-Server + REST-API (/api/members, /api/events, /api/meeting-points)
|
||||
server.js Express-Server + REST-API (/api/members, /api/events, /api/meeting-points, /api/patches, .ics-Export)
|
||||
auth.js Login, Passwort-Hashing, Sitzungen
|
||||
scripts/user.js Benutzerverwaltung (npm run user)
|
||||
data/ db.json, users.json, sessions.json (automatisch angelegt, nicht in Git)
|
||||
public/ öffentlich: Startseite, Login, CSS, Bilder, common.js
|
||||
data/ db.json, users.json, sessions.json, patches/ (automatisch angelegt, nicht in Git)
|
||||
public/ öffentlich: Startseite, Statistik, Patches, Login, CSS, Bilder, Schriften, common.js
|
||||
private/ nur angemeldet: Kalender, Fahrtplaner, Gruppe
|
||||
```
|
||||
|
||||
@@ -76,3 +84,8 @@ private/ nur angemeldet: Kalender, Fahrtplaner, Gruppe
|
||||
Per Docker hinter dem Nginx Proxy Manager: `docker compose up -d --build` (Daten liegen in `./data`,
|
||||
die Seite läuft auf Port 3000, änderbar per `HCRB_PORT` in `.env`). Schritt-für-Schritt-Anleitung inkl. Domain, HTTPS, Updates und Backups:
|
||||
[DEPLOY.md](DEPLOY.md). Skripte für Updates und Backups liegen in `deploy/`.
|
||||
|
||||
## Schriften
|
||||
|
||||
Die Schriften liegen in `public/fonts/` und werden vom eigenen Server ausgeliefert (keine Anfrage an Google, DSGVO):
|
||||
Saira Stencil One (Schriftzug „HCRB“), Barlow und Barlow Condensed. Alle unter der SIL Open Font License 1.1.
|
||||
Reference in new issue
Block a user