3.8 KiB
3.8 KiB
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
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 besuchenGET /api/status/:username- Fortschritt abrufenGET /api/all-users- Alle Teilnehmer anzeigenDELETE /api/reset/:username- Reset für User
Deployment
Nginx Konfiguration
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
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
- SQLite-Integration - API-Endpunkte für Datenbank-Zugriff
- Server-Datenpersistenz - localStorage → Server-Side Storage
- Deployment - Backend-Server auf 192.168.0.187:8083 starten
- Sicherheit - Input Validation, Rate Limiting
- 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! 🍻