Table of contents
Reservationssystem für die beiden Dunkelrestaurants in Basel und Zürich. Ablösung einer in die Jahre gekommenen Access-Datenbank — gleicher Funktionsumfang, neue technische Basis, ohne Aufblähung.
Was ist das?
Die Blindekuh-Restaurants in Basel und Zürich liefen jahrelang über eine gewachsene Access-Datenbank. Funktionierte, bis sie es nicht mehr tat — Reservationen liessen sich nicht mehr sauber löschen, das System wurde unbenutzbar, der Adressbestand zu gross für die alte Struktur.
Das Reservationstool übernimmt die bekannten Abläufe (Reservation, Adressverwaltung, Mandantenfähigkeit für die zwei Standorte) in einer eigenständigen Web-App. Beide Standorte arbeiten getrennt, teilen sich aber Stammdaten und Workflows wo es Sinn ergibt.
Stack & Architektur
Bewusst schlank gehalten — so wenig Abhängigkeiten wie möglich.
- Nuxt 3 als Fullstack-Framework (Frontend + Server-Routes)
- Vue 3 für die UI
- PostgreSQL als Datenbank, ersetzt Access vollständig
- Tailwind für das Styling
- Docker für Deployment und Environment-Parität
Mandantenstruktur ist im Datenmodell verankert: Basel und Zürich sind getrennte Mandanten, können aber projektbezogen zusammenarbeiten. Kein generischer Multi-Tenancy-Layer, sondern auf den realen Use-Case zugeschnitten.
Herausforderungen
Migration aus Access. Der Funktionsumfang war über Jahre gewachsen — viele kleine Spezialfälle, die nirgends dokumentiert waren ausser in der Logik der Access-Formulare selbst. Übernahme bedeutete: jedes Feature einzeln nachvollziehen, neu denken und entscheiden, ob es noch gebraucht wird.
Datenbestand. Rund 70'000 Adressen in der Altdatenbank, davon viele veraltet oder doppelt. Migration mit Mapping, Bereinigung und sauberem Schema in Postgres.
Mandantenmodell. Basel und Zürich gehören zusammen, sind aber operativ eigenständig. Mandanten mussten so modelliert werden, dass sie unabhängig arbeiten können, gemeinsame Daten aber nicht doppelt gepflegt werden müssen.
Ergebnisse
- Ablösung der Access-Datenbank — Reservationen müssen nicht mehr gelöscht werden, weil das System nicht mehr an seine Grenzen läuft
- Rund 20'000 Reservationen seit Go-Live
- Adressbestand von ~70'000 Einträgen migriert
- Beide Standorte produktiv im täglichen Betrieb