3.5 KiB
3.5 KiB
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
sqlite3Package - 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
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
# 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
- PostgreSQL Migration bei >10k Usern
- Redis Caching für statische Daten (Bezirke, Beiseln)
- Load Balancing mit mehreren Express Instanzen
- 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