Bookings. Capacity. Fully automated.
30 Mar, 2026

Bookings. Capacity. Fully automated.

BookingSystem-002The Booking System Demo shows how a complete booking workflow can be implemented professionally: from user registration with admin approval, through automatic capacity checks, to PDF confirmations sent by email. All in a clean, extensible architecture.

What the system can do

Feature

 

Description

 

Registration & approval

Users sign up via email. Admins activate accounts individually — no spam registrations.

Booking calendar

Interactive monthly calendar (FullCalendar.io) with real-time availability.

Automatic capacity check

Available seats are checked atomically. Below threshold → instant confirmation. Above → admin queue.

Multi-day series slots

Bookable time-range slots spanning multiple days — with per-day capacity validation.

Email notifications

All relevant events trigger automated emails (async via message queue).

PDF booking confirmations

Confirmation PDFs are generated server-side (Gotenberg) and sent as attachments.

Admin dashboard

Statistics, KPIs, top slots, and pending bookings & users at a glance.

Instructor management

Slots can be assigned to instructors — including per-instructor statistics.

Data export (CSV)

Bookings, users, and instructors exportable as CSV — filterable by status and date range.

GDPR self-service

Users can request a data extract (PDF) and delete their account themselves.

Cancellation

Self-cancellation up to 24 h before the slot; after that, admin-only.

Waiting list

Automatic promotion on cancellation (configurable).

 

Technology that scales

The system uses only established, enterprise-grade open-source technologies — no proprietary lock-in, full control over every layer.

Backend

  • PHP 8.3 with strict_types — type-safe from the ground up

  • Symfony 7 (LTS) — proven, scalable, well-documented

  • Doctrine ORM with Migrations — clean database layer

  • Symfony Messenger — async email processing via message queue

  • Symfony Security + Voters — granular permission logic, no hard-coded role checks

Frontend

  • Twig Templates — server-side rendering, no JS framework overhead

  • Bootstrap 5 — responsive, accessible layout

  • FullCalendar.io — interactive booking calendar

Infrastructure

  • MariaDB — proven relational database

  • Gotenberg — PDF generation from HTML/Twig, fully containerised

  • Docker Compose — complete local dev setup in a single command

  • Symfony Mailer + Mailpit (dev) — email testing without an external SMTP server

Quality

  • PHPStan Level 8 — maximum static analysis

  • PHP CS Fixer (PSR-12 + Symfony Ruleset)

  • PHPUnit + Symfony WebTestCase

 

Privacy is not a feature — it's the foundation

BookingSystem-004The Booking System Demo was built GDPR-compliant from day one. No retrofitted patches — privacy as an architectural principle.

What is concretely implemented:

  • Data export on demand — users can export all stored personal data as a PDF at any time (Art. 15 GDPR)

  • Account deletion by the user — complete account deletion including anonymisation of linked booking records (Art. 17 GDPR)

  • Anonymised booking history — after account deletion, booking statistics are retained without being traceable to individuals

  • Minimal data collection — only fields actually required for the booking process are stored

  • Admin-side data control — GDPR-compliant CSV export for bookings, users, and instructors

  • Password hashing — bcrypt/argon2 via Symfony Security, no plain-text passwords

  • CSRF protection — all forms secured with CSRF tokens

  • Role-based access control — granular permissions via Symfony Voters, no hard-coded role checks in business logic

 

Who is it for?

The system is deliberately kept generic and can be adapted to any use case with minimal effort.

  • Educational institutions — courses, seminars, workshops with limited capacity

  • Clubs & non-profits — room allocation, event registrations

  • Family & community centres — course sign-ups with waiting list (reference implementation)

  • Companies — internal training or resource bookings

  • Developer teams — as a starting point / boilerplate for custom booking projects

 

See the live demo →
Try the system yourself — register, book, cancel.
Demo: buchungssystem.der-hoelzemann.de