Initial commit: Beisel Rallye Graz Project with full documentation

This commit is contained in:
2026-06-29 12:20:12 +02:00
commit 7bdc792019
9 changed files with 2193 additions and 0 deletions
+131
View File
@@ -0,0 +1,131 @@
# Beisel Rallye Graz 🍺
## Projektübersicht
Interaktive Website für eine Bier-Rallye durch 17 Grazer Bezirke. Teilnehmende tragen bei jedem besuchten Bezirk das entsprechende Beisel (Bierlokal) ein und verfolgen ihren Fortschritt.
### Konzept
- **Ziel:** Alle 17 Grazer Bezirke besuchen
- **Aktivität:** Für jeden Bezirk ein lokales Beisel finden und eintragen
- **Zeitrahmen:** 24 Stunden Rallye
- **Multi-User:** Mehrere Teilnehmer können parallel teilnehmen
## Technologie-Stack
- **Backend:** Express.js (Node.js)
- **Frontend:** EJS Templates + Vanilla JavaScript
- **Datenbank:** SQLite (beisel_rally.db)
- **Styling:** Custom CSS mit Wirtshaus-Theme
- **Deployment:** Nginx Reverse Proxy auf `aufeins.click.jetzt`
## Architektur
```
beisel-rally/
├── index.js # Express Server (Port 8083)
├── package.json # Dependencies & Scripts
├── beisel_rally.db # SQLite Datenbank
├── server.log # Laufzeit-Logs
├── PROJECT.md # Diese Dokumentation
├── public/
│ └── css/
│ └── style.css # Responsive Styling
└── views/
└── index.ejs # Haupttemplate mit Client-Side Logic
```
## Datenbank-Design
### Tabelle: `rally_logs`
```sql
CREATE TABLE rally_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_name TEXT NOT NULL,
district TEXT NOT NULL,
beisel_name TEXT NOT NULL,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);
```
**Zweck:** Server-seitige Speicherung aller Rallye-Einträge für persistente Multi-User-Fähigkeit.
## API-Endpunkte (geplant)
### Aktuelle Situation
Derzeit wird **nur localStorage** im Browser genutzt. Die SQLite-Datenbank ist vorhanden, wird aber nicht integriert.
### Zu implementierende Endpunkte:
- `POST /api/visit` - Neuen Bezirk besuchen
- `GET /api/status/:username` - Fortschritt abrufen
- `GET /api/all-users` - Alle Teilnehmer anzeigen
- `DELETE /api/reset/:username` - Reset für User
## Deployment
### Nginx Konfiguration
```nginx
server {
listen 443 ssl;
server_name aufeins.click.jetzt;
ssl_certificate /etc/letsencrypt/live/aufeins.click.jetzt/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/aufeins.click.jetzt/privkey.pem;
location / {
proxy_pass http://192.168.0.187:8083;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
### Server Starten
```bash
cd /home/claw/.openclaw/agents/wisp/workspace/beisel-rally
node index.js
# Server läuft auf http://localhost:8083
```
## Entwicklungs-Status
### ✅ Abgeschlossen
- Grundlegende Frontend-Struktur
- Responsive Design mit Mobile-Support
- User-Auswahl und -Verwaltung (localStorage)
- Fortschrittsanzeige
- Wirtshaus-Theme Implementierung
### ❌ Offene Punkte
1. **SQLite-Integration** - API-Endpunkte für Datenbank-Zugriff
2. **Server-Datenpersistenz** - localStorage → Server-Side Storage
3. **Deployment** - Backend-Server auf 192.168.0.187:8083 starten
4. **Sicherheit** - Input Validation, Rate Limiting
5. **Export/Import** - Backup-Funktionalität
## Nächste Schritte
### Kurzfristig (Prio 1)
- [ ] API-Endpunkte für SQLite-Datenbank implementieren
- [ ] Client-Seite anpassen um API zu nutzen
- [ ] Server starten und testen
### Mittelfristig (Prio 2)
- [ ] Authentifizierung hinzufügen
- [ ] Leaderboard implementieren
- [ ] Export/Import Funktionalität
### Langfristig (Prio 3)
- [ ] Mobile App (Progressive Web App)
- [ ] Social Features (Teilen, Einladungen)
- [ ] Anbindung an bestehende Beisel-Datenbank
## Kontakt & Credits
Projekt erstellt von Gregor. Entwicklung durch Wisp (AI Coding Agent).
**Domain:** aufeins.click.jetzt
**Server:** 192.168.0.187:8083
**Gitea:** http://gitea.click.jetzt:3000/clawdia/beisel-rally
---
*Prost! 🍻*