Initial commit: Beisel Rallye Graz Project with full documentation
This commit is contained in:
+131
@@ -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! 🍻*
|
||||
Reference in New Issue
Block a user