Files

5.6 KiB

Reservierungssystem - 3-Raum-Implementierung

Datum: 16. Mai 2026
Version: 2.0 (3-Raum-System)
Server: VM251 (192.168.0.251)
URL: http://192.168.0.251


Übersicht

Reservierungssystem mit Raum- und Tischverwaltung für Restaurant/Event-Betrieb.

Features:

  • 3 Buchbare Räume mit individuellen Tischplänen
  • Visuelle Tisch-Auswahl im Grundriss
  • Raum-Buchung für Veranstaltungen
  • Automatische Verfügbarkeitsprüfung

Architektur

Tech-Stack

Komponente Technologie
Backend Python 3.12 + Flask
Datenbank SQLite (reservations.db)
Frontend Vanilla JS + HTML/CSS
Webserver Gunicorn (dev)
Container Docker

Netzwerk

  • Port 80: Web-UI (reservierung-frontend)
  • Port 8081: API-Direktzugriff (reservation-system)

Datenbank-Schema

Räume (rooms)

Feld Typ Beschreibung
id INTEGER PK Raum-ID
name TEXT Raumname
capacity INTEGER Maximale Kapazität
color TEXT Farbe für UI (#hex)

Bereiche (areas)

Feld Typ Beschreibung
id INTEGER PK Bereich-ID
room_id INTEGER FK Zugehöriger Raum
name TEXT Bereichsname
available_from TIME Öffnungszeit
available_to TIME Schließzeit

Tische (tables)

Feld Typ Beschreibung
id INTEGER PK Tisch-ID
area_id INTEGER FK Zugehöriger Bereich
name TEXT Tischbezeichnung
x, y INTEGER Position im Grundriss
width, height INTEGER Größe (Pixel)
shape TEXT Form: rect/circle/oval
seats INTEGER Sitzplätze
is_combinable BOOLEAN Kombinierbar
is_active BOOLEAN Aktiv/Inaktiv

Raum-Buchungen (room_bookings)

Feld Typ Beschreibung
id INTEGER PK Buchungs-ID
room_id INTEGER FK Gebuchter Raum
date DATE Datum
time_from TIME Startzeit
time_to TIME Endzeit
event_name TEXT Veranstaltung
status TEXT pending/confirmed/cancelled

Konfigurierte Räume

Raum 1: Hauptraum

  • Kapazität: 80 Plätze
  • Farbe: #3b82f6 (Blau)
  • Tische: 8
    • T1-T3: 4er/6er Tische (rect)
    • T4: 6er Rund (circle)
    • T5-T6: 4er Tische (rect)
    • T7: 8er Rund (circle)
    • T8: 10er Großtisch (rect)

Raum 2: Saal A

  • Kapazität: 40 Plätze
  • Farbe: #10b981 (Grün)
  • Tische: 5
    • A1-A3: 4er Tische (rect)
    • A4-A5: 6er Tische (rect)

Raum 3: Saal B

  • Kapazität: 30 Plätze
  • Farbe: #f59e0b (Orange)
  • Tische: 5
    • B1-B2: 4er Tische (rect)
    • B3: 6er Tisch (rect)
    • B4-B5: 4er Rund (circle)

API-Endpunkte

Räume

GET    /api/rooms                    # Alle Räume mit Tischen
GET    /api/rooms-with-bookings      # Räume + aktuelle Buchungen

Tische

GET    /api/tables/<area_id>         # Tische eines Bereichs
POST   /api/tables/<area_id>         # Tisch erstellen
PUT    /api/tables/<table_id>         # Tisch aktualisieren
DELETE /api/tables/<table_id>         # Tisch löschen

Reservierungen

GET    /api/reservations             # Alle Reservierungen
POST   /api/reservations             # Reservierung erstellen
PUT    /api/reservations/<id>        # Reservierung aktualisieren
DELETE /api/reservations/<id>        # Reservierung stornieren
POST   /api/reservations/check-availability  # Verfügbarkeit prüfen

Raum-Buchungen (Events)

GET    /api/room-bookings            # Alle Raum-Buchungen
POST   /api/room-bookings            # Raum buchen
PUT    /api/room-bookings/<id>       # Buchung aktualisieren
DELETE /api/room-bookings/<id>       # Buchung stornieren
GET    /api/room-availability        # Raum-Verfügbarkeit

Verfügbarkeit

GET    /api/availability?date=YYYY-MM-DD&time_from=HH:MM&time_to=HH:MM

Deployment

Docker-Container

# Backend starten
docker run -d --name reservation-system \
  -p 80:8080 \
  -v reservation-data:/data \
  --restart unless-stopped \
  reservierung-system:fixed

Datenbank-Backup

# Backup erstellen
docker exec reservation-system \
  cp /data/reservations.db /data/reservations.db.backup-$(date +%Y%m%d)

# Backup herunterladen
docker cp reservation-system:/data/reservations.db.backup-YYYYMMDD ./

Änderungen (Changelog)

v2.0 (16.05.2026)

  • 3-Raum-System implementiert
  • Räume: Hauptraum, Saal A, Saal B
  • 18 Tische mit Positionen und Sitzplätzen
  • Raum-Buchung für Veranstaltungen
  • Visuelle Tisch-Auswahl im Grundriss
  • Verfügbarkeitsprüfung automatisiert
  • API erweitert: /api/rooms, /api/room-bookings

v1.0 (vorher)

  • Einfaches Tisch-Reservierungssystem
  • Keine Raum-Zuordnung
  • Keine Event-Buchungen

Zugriff

SSH:

ssh root@192.168.0.251
# Passwort: qwertzuiOP1!

Web-UI: http://192.168.0.251

API-Test:

curl http://192.168.0.251/api/rooms
curl http://192.168.0.251/api/health

Bekannte Probleme

  • Frontend-Design könnte professioneller sein
  • Keine Benutzer-Authentifizierung (Admin/Mitarbeiter)
  • Keine E-Mail-Benachrichtigungen implementiert
  • Keine Öffnungszeiten pro Raum konfigurierbar

Nächste Schritte

  1. Frontend-Design verbessern (professionelles UI)
  2. Benutzer-Rollen einführen (Admin, Mitarbeiter, Gast)
  3. E-Mail-Versand aktivieren
  4. Öffnungszeiten pro Raum konfigurierbar machen
  5. Statistiken/Dashboard erweitern

Kontakt

  • Entwicklung: Peter (KI-Assistent)
  • Server: X2 (192.168.0.55) / VM251 (192.168.0.251)
  • Git: Committen auf VM251, Push zu Gitea pending