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
+112
View File
@@ -0,0 +1,112 @@
# Architektur-Dokumentation: Beisel Rallye 🍺
## Systemübersicht
```
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Browser │──────→│ Express Server │──────→│ SQLite DB │
│ (Client) │ │ (:8083) │ │ │
└─────────────────┘ └──────────────────┘ └─────────────────┘
↕ ↕
Nginx Reverse Proxy beisel_rally.db
(aufeins.click.jetzt) :8083
```
## Komponenten
### 1. Frontend (Browser)
- **Technologie:** Vanilla JavaScript + EJS Templates
- **Responsibility:** UI-Rendering, User-Interaktion, Client-Side Validation
- **Speicherung:** Aktuelle Implementierung nutzt localStorage (→ wird durch Server API ersetzt)
### 2. Backend (Express.js)
- **Port:** 8083
- **Routing:** Express Router
- **Datenbank:** SQLite via `sqlite3` Package
- **Middleware:** body-parser, CORS (geplant)
### 3. Datenbank (SQLite)
- **Datei:** `beisel_rally.db`
- **Schema:** Einfache Tabelle `rally_logs`
- **Skalierung:** Ausreichend für erwartete User-Anzahl (<1000)
## Datenfluss
### Aktuelle Implementierung (localStorage-basiert):
```
User → Browser UI → localStorage → (keine Server-Kommunikation)
```
### Ziel-Implementierung (Server-seitig):
```
User → Browser UI → API Request → Express Server → SQLite DB
↑ |
└─────────────── API Response ←────────────────┘
```
## Datenbank-Schema
```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
);
-- Index für häufige Queries
CREATE INDEX idx_user_district ON rally_logs(user_name, district);
```
## Deployment-Architektur
### Nginx Reverse Proxy
- **Funktion:** SSL-Terminierung, Load Balancing (geplant)
- **Domain:** aufeins.click.jetzt
- **Backend:** 192.168.0.187:8083
- **SSL:** Let's Encrypt automatisch
### Server-Setup
```bash
# Abhängigkeiten installieren
cd /home/claw/.openclaw/agents/wisp/workspace/beisel-rally
npm install
# Server starten
node index.js
# Im Hintergrund laufen lassen (optional)
nohup node index.js > server.log 2>&1 &
```
## Skalierungsbetrachtung
### Aktuelle Kapazitäten
- **SQLite:** Bis ~1M Einträge performant
- **Express:** Bis ~100 req/s ohne Optimierung
- **Nginx:** Hoch skalierbar
### Erweiterungsmöglichkeiten
1. **PostgreSQL Migration** bei >10k Usern
2. **Redis Caching** für statische Daten (Bezirke, Beiseln)
3. **Load Balancing** mit mehreren Express Instanzen
4. **WebSocket** für Echtzeit-Updates
## Sicherheitshinweise
### Aktuelle Schwachstellen
- ❌ Keine Input Validation auf Server-Side
- ❌ Keine Rate Limiting
- ❌ SQL Injection möglich (bei korrekter Implementierung)
- ❌ CORS nicht konfiguriert
### Verbesserungen
- ✅ Parameterisierte Queries verwenden
- ✅ Rate Limiting implementieren
- ✅ CORS Headers setzen
- ✅ Input Sanitization hinzufügen
- ✅ HTTPS erzwingen (bereits durch Nginx gegeben)
---
*Stand: 2026-06-29 | Version: 1.0*