Terminverwaltung mit 490 automatisierten Tests

Buchungen, Kapazitäten, Kurse und Materialverleih in einem System – mit Vier-Augen-Freigaben, einem geschützten Änderungsprotokoll und einem Nachweis, dass alles funktioniert.

Auf einen Blick

Branche
Freizeitbetrieb mit Kursen, Gruppenbuchungen und Materialverleih
Zeitraum
Juli bis August 2026
Unsere Rolle
Konzeption, Entwicklung und Abnahmetests

490

automatisierte Tests

83

Routen per E2E-Test abgedeckt

4 Wochen

simulierter Betrieb vor der Übergabe

Ausgangslage

Ein Freizeitbetrieb brauchte eine Verwaltung für Termine, Kursbuchungen, Gruppenkontingente und den Verleih von Ausrüstung. Wie viele Plätze ein Termin hat, hängt dabei vom eingeteilten Personal und vom verfügbaren Material ab. Änderungen an bestätigten Terminen betreffen Kunden und müssen nachvollziehbar abgestimmt werden.

Ziel

Ein System, das Überbuchungen technisch ausschließt, Zuständigkeiten über Rollen und Freigaben abbildet und vom ersten Tag an zuverlässig läuft – nachgewiesen, bevor es übergeben wird.

Lösung

Wir haben die Terminverwaltung mit Symfony und htmx gebaut: serverseitig erzeugte Oberflächen, die sich wie eine moderne Anwendung bedienen lassen, ohne schweres Frontend-Framework. Jede Aktion, die Plätze belegt, sperrt den betroffenen Termin in der Datenbank. Selbst zwei gleichzeitige Buchungen vergeben den letzten Platz deshalb nie doppelt – parallele Tests belegen das.

Dazu kommen vier Rollen mit einer Rechte-Matrix, ein Vier-Augen-Ablauf für Verschiebungen und Absagen, Gruppenkontingente mit automatischer Freigabe, Tagesbestände für Leihmaterial und ein Änderungsprotokoll, das die Datenbank selbst vor nachträglichen Änderungen schützt.

Aufbau der TerminverwaltungDer Browser bedient die Anwendung über htmx. nginx reicht Anfragen an Symfony weiter; Symfony speichert in PostgreSQL, das Termine bei kapazitätswirksamen Aktionen sperrt und das Änderungsprotokoll gegen Änderungen schützt. Bestätigungsmails verschickt ein eigener Worker über den Mailserver.BrowserhtmxnginxSicherheitsheaderSymfony 8.1PHP 8.4PostgreSQL 16Sperren · ProtokollMail-WorkerSymfony MessengerMailserverBestätigungen
Aufbau der Terminverwaltung: serverseitig gerenderte Oberfläche, Sperren und Protokoll direkt in der Datenbank.

Ergebnis

490 automatisierte Tests sichern das Verhalten ab. Jede der 83 Routen der Anwendung ist durch einen End-to-End-Test abgedeckt – gemessen am Zugriffsprotokoll des Webservers, nicht geschätzt.

Vor der Übergabe lief das System vier Wochen im simulierten Betrieb: vom leeren System über Monatswechsel und Feiertag bis zur Nachweisführung, jeder Handgriff im Browser. Was dabei auffiel, wurde vor der Übergabe behoben.

Stack

  • Symfony 8.1
  • PHP 8.4
  • htmx
  • Alpine.js
  • PostgreSQL 16
  • nginx
  • Docker

Weitere Case Studies

Passt das zu Ihrem Vorhaben?

Beschreiben Sie kurz, worum es geht. Wir melden uns mit einer ehrlichen Einschätzung, ob und wie wir helfen können.

Projekt anfragen