Files

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 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

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

  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