Case Study · Digitales Ticketing

Wasserbus
Konstanz

Ein vollständiges, produktionsreifes Ticketing-System für eine Schifffahrtslinie am Bodensee: Online-Buchung, digitales Ticket, Bordvalidierung und Analyse-Dashboard – aus einer Hand entwickelt.

Online-Buchung Stripe Payments QR-Validierung Admin-Dashboard Fahrgastprognose
wasserbus-konstanz.de
Screenshot: Startseite & Buchung Hero der Live-Seite mit Fahrplan und Ticket-Buchung
< 60 svom Aufruf bis zum bezahlten Ticket
0App-Downloads oder Registrierungen nötig
40+API-Endpunkte im Backend
100 %personenbezogene Daten nur gehasht gespeichert
Projekt auf einen Blick

Eine Fähre wird digital

Der Wasserbus verbindet das Bodenseeforum mit dem Stadthafen Konstanz in 15 Minuten. Statt Papiertickets und Kassenbetrieb an Bord wickelt das System den kompletten Lebenszyklus einer Fahrkarte digital ab: Kauf, Zustellung, Aktivierung, Kontrolle und Auswertung – ohne App, ohne Kundenkonto, direkt im Browser.

Kunde

Wasserbus Konstanz
(Schifffahrtsbetrieb, Bodensee)

Leistungen

Konzeption, UX/UI, Full-Stack-Entwicklung, Payment-Integration, Betrieb

Systemumfang

Buchungsseite, Ticket-Wallet, Bord-Validator, Admin-Dashboard, Prognose-Modul

Besonderheit

Gerätegebundene Tickets mit kryptographisch gesicherten Einmal-QR-Codes

Struktur

Systemarchitektur

Bewusst schlank gehalten: Ein Node.js/Express-Backend bedient fünf Vanilla-JS-Frontends. Keine Framework-Abhängigkeiten im Frontend bedeutet minimale Ladezeiten am Bodensee-Mobilfunknetz – und langfristig wartbaren Code ohne Build-Pipeline.

FRONTEND · VANILLA JS Buchungsseiteindex.html Digitales Ticketticket.html · QR-Code Bord-Validatorvalidator.html · Scanner Admin-Dashboardadmin.html · Statistiken Leichte SpracheBarrierefreiheit HTTPS · REST · JSON Node.js / Express API Checkout & Tarife Ticket & QR-Token Validierung Admin & Prognose Helmet · CORS-Whitelist · Rate-Limiting · Winston-Logging · Jest-Tests StripeCheckout + Webhook SMTPTicket-Versand MySQL 8 tickets · tariffs · validators · validation_log · payments · schedule Background-Jobs Ticket-Expiry · Log-Rotation PM2-Prozessmanagement Öffentliche Komponenten Geschützte Bereiche & externe Dienste
User Experience

Der Kaufprozess: Vier Schritte, keine Hürden

Die wichtigste Design-Entscheidung des Projekts: maximale Einfachheit. Fahrgäste stehen oft direkt am Anleger – der Kauf muss schneller gehen als das Anlegen des Schiffes. Deshalb: keine App, kein Konto, kein Passwort. E-Mail-Adresse eingeben, zahlen, fertig.

Tarif wählen

Einzelfahrt, Tageskarte oder Familienticket – per Plus/Minus direkt auf der Startseite. Preise live aus der Tarifdatenbank.

~ 15 Sekunden

Sicher bezahlen

Weiterleitung zu Stripe Checkout: Karte, Apple Pay oder Google Pay. Die Zahlungsbestätigung kommt serverseitig per Webhook.

~ 30 Sekunden

Ticket per E-Mail

Sekunden nach der Zahlung liegt der persönliche Ticket-Link im Postfach – kein Ausdrucken, kein Wallet-Import nötig.

sofort

QR-Code an Bord

Beim ersten Öffnen bindet sich das Ticket an das Gerät. An Bord genügt ein Blick aufs Handy – das Personal scannt, fertig.

~ 2 Sekunden
Warum das funktioniert: Der QR-Code auf dem Ticket ist kein statisches Bild, sondern ein Einmal-Token mit 3 Minuten Gültigkeit, das sich live erneuert. Screenshots weitergeben? Zwecklos. Gleichzeitig bleibt die Bedienung für den Fahrgast so einfach wie ein Boarding-Pass.
Screenshot: TarifauswahlMobile Buchungsmaske mit Mengenwahl
Screenshot: Stripe CheckoutZahlung mit Apple Pay / Karte
Screenshot: Digitales TicketLive-QR-Code mit Countdown
Vier Anwendungen, ein System

Das komplette System

Hinter der einfachen Buchungsseite steckt ein geschlossener Kreislauf: Jede Rolle – Fahrgast, Bordpersonal, Betreiber – hat ihre eigene, aufgabengerechte Oberfläche.

wasserbus-konstanz.de
Screenshot: Buchungsseite Fahrplan, Tarifübersicht und Checkout-Einstieg

Buchungsseite

Für Fahrgäste · öffentlich

Landingpage und Verkaufskanal in einem: Fahrplan mit Live-Ausnahmen, Haltestellen, Preise und der komplette Ticketkauf – suchmaschinenoptimiert mit strukturierten Daten (Schema.org LocalBusiness).

  • Tarife werden live aus der Datenbank geladen – Preisänderungen ohne Deployment
  • Öffentlicher Fahrplan-Endpunkt inkl. Ausnahme-Verwaltung
  • DSGVO-konform mit Cookiebot-Consent-Management
Screenshot: Ticket-SeiteQR-Code, Gültigkeit und Status auf dem Smartphone

Digitales Ticket

Für Fahrgäste · gerätgebunden

Die Fahrkarte lebt im Browser – ohne App-Store-Umweg. Beim ersten Öffnen wird das Ticket kryptographisch an genau ein Gerät gebunden. Weiterleiten des Links bringt nichts: Auf fremden Geräten bleibt das Ticket gesperrt.

  • QR-Einmal-Token mit 3 Minuten Gültigkeit, automatisch erneuert
  • Tages- und Einzelfahrten mit serverseitiger Ablaufsteuerung
  • Statusanzeige in Echtzeit: ausgestellt, aktiv, entwertet, abgelaufen
Screenshot: ValidatorKamera-Scanner mit Grün/Rot-Ergebnis für das Bordpersonal

Bord-Validator

Für das Personal · passwortgeschützt

Das Kontrollgerät ist das eigene Smartphone des Personals: Login, Kamera an, scannen. Das Ergebnis kommt in unter einer Sekunde – groß, farbcodiert und auch bei Sonne auf dem Wasser ablesbar.

  • Kamera-Scanning direkt im Browser (html5-qrcode) – keine Spezialhardware
  • 12-Minuten-Sperrfrist verhindert Doppelscans bei Einzelfahrten
  • Jeder Scan landet im Audit-Log: Validator, Ergebnis, Zeitpunkt
  • 12-Stunden-Sessions – einmal anmelden pro Schicht
wasserbus-konstanz.de/admin
Screenshot: Admin-Dashboard Umsatz, Ticketverkäufe und Auslastung je Abfahrt

Admin-Dashboard

Für den Betreiber · HTTP Basic Auth

Die Kommandozentrale des Betriebs: Tarife, Fahrplan, Tickets, Kontrollpersonal und Systemeinstellungen – alles an einem Ort, ohne dass der Betreiber je eine Datenbank anfassen muss.

  • Umsatz- und Verkaufsstatistiken, Auslastung je Abfahrt
  • Ticketsuche mit Statusfilter, manueller Statusänderung und Geräte-Reset
  • Tarif- und Fahrplanpflege in Echtzeit – inkl. Ausnahmen
  • Validator-Verwaltung mit Passwort-Reset und Deaktivierung

Analyse & Fahrgastprognose

Für den Betreiber · datengetrieben

Das Highlight für die Betriebsplanung: Ein eigenes Prognosemodell schätzt die Fahrgastzahlen der kommenden Wochenenden – auf Basis von Wetterdaten, Parkplatzauslastung und lokalen Events. So lässt sich Personal- und Schiffseinsatz vorausschauend planen.

  • Prognose (Ptotal) aus Tagesmerkmalen: Wetter, Parkplätze, Veranstaltungen
  • Live-Korrektur während des Betriebstags anhand realer Verkäufe
  • Selbstlernend: Modell-Optimierung auf Basis historischer Ist-Zahlen
  • Event-Extraktion aus externen Datenquellen automatisiert
Unter der Haube

So funktioniert die fälschungssichere Validierung

Papiertickets kann man kopieren, Screenshots kann man teilen. Dieses System nicht: Der Lebenszyklus jedes QR-Codes ist kryptographisch abgesichert.

📱 Fahrgast-Gerät fordert QR-Token an (X-Device-Token-Header) nur vom gebundenen Gerät 🔐 Server erzeugt 32-Byte-Zufallstoken speichert nur SHA-256-Hash Gültigkeit: 3 Minuten 🎫 QR-Code wird auf dem Ticket gerendert und automatisch erneuert einmalig einlösbar ✅ Validator scannt & entwertet Audit-Log-Eintrag 12 Min. Sperrfrist Abgelaufene oder bereits benutzte Tokens werden serverseitig abgelehnt – ein kopierter QR-Code ist nach maximal 3 Minuten wertlos. Ergebnis: fälschungssicher ohne Spezialhardware
Sicherheit & Datenschutz

Security by Design

Ein Ticketsystem verarbeitet Zahlungen und personenbezogene Daten – entsprechend kompromisslos ist die Sicherheitsarchitektur. Grundprinzip: Was nicht im Klartext gespeichert wird, kann nicht gestohlen werden.

Zero-Klartext-Prinzip

E-Mails, Device-Tokens, IP-Adressen und Scan-Tokens werden ausschließlich als SHA-256-Hash gespeichert. Passwörter mit PBKDF2 (100.000 Iterationen).

Kryptographische Tokens

Ticket-Links mit HMAC-SHA256 signiert, QR-Tokens aus 32 Byte Zufallsdaten, timing-sichere Vergleiche gegen Timing-Angriffe.

Rate-Limiting überall

Checkout, QR-Erzeugung, Scans und Logins sind einzeln limitiert – Schutz vor Brute-Force, Ticket-Flooding und Scan-Missbrauch.

HTTP-Härtung

Content-Security-Policy, X-Frame-Options: DENY, CORS-Whitelist – gesetzt über Helmet, auf jeder Seite.

Transaktionale Integrität

Stripe-Webhooks laufen in DB-Transaktionen mit Idempotenz-Prüfung – keine Doppelbuchungen, keine Race Conditions.

Lückenloses Audit-Log

Jede Validierung wird protokolliert; strukturiertes Winston-Logging mit täglicher Rotation und ZIP-Archivierung außerhalb des Web-Roots.

Werkzeuge

Der Tech-Stack

Bewährte, langfristig wartbare Technologien statt Framework-Hype: Das Frontend kommt komplett ohne Build-Prozess aus, das Backend setzt auf den Node.js-Industriestandard.

Backend

API · Zahlungen · Datenhaltung
Node.js 18+ · Runtime Express 4 · Web-Framework MySQL 8 · Datenbank (Connection Pool) Stripe · Checkout & Webhooks Nodemailer · SMTP-Ticketversand Helmet · Security Headers express-rate-limit · Rate-Limiting Winston · Logging + Rotation Jest + Supertest · Test-Suite PM2 · Prozessmanagement

Frontend

Schnell · leichtgewichtig · ohne Build
Vanilla JS · 0 Framework-Abhängigkeiten HTML5 / CSS3 · Responsive Design QRCode.js · QR-Generierung html5-qrcode · Kamera-Scanning Bebas Neue + DM Sans · Self-hosted Fonts Schema.org · Structured Data / SEO Cookiebot · Consent-Management
QualitätsmerkmalUmsetzung
Automatisierte TestsJest-Suite für Auth, Checkout, QR-Tokens, Validierung und Login – mit Coverage-Reporting
DeploymentPM2-Prozessmanagement mit Ecosystem-Konfiguration, Health-Check-Endpunkt für Monitoring
ObservabilityGetrennte App-, Error- und HTTP-Access-Logs (CLF), täglich rotiert und archiviert
KonfigurationVollständig über Umgebungsvariablen – identischer Code in Staging und Produktion
Über den Standard hinaus

Weitere Besonderheiten

Barrierefreiheit

Eigene Version in Leichter Sprache – damit wirklich jeder Fahrgast versteht, wie man ein Ticket kauft. Ein Angebot, das im ÖPNV-Umfeld selten konsequent umgesetzt wird.

SEO & Sichtbarkeit

Strukturierte Daten (LocalBusiness), Open-Graph- und Twitter-Cards, Sitemap und saubere Canonicals – die Buchungsseite ist zugleich das Marketing-Instrument.

Performance

Kein Framework, keine Build-Pipeline, self-hosted Fonts: Die Seite lädt auch im Mobilfunknetz auf dem Wasser in Sekundenbruchteilen.

Eigenes Prognosemodell

Fahrgastprognose aus Wetter, Events und Parkplatzdaten mit Live-Korrektur und automatischer Modell-Optimierung – Data Science im Tagesgeschäft eines Fährbetriebs.

Betrieb ohne IT-Abteilung

Tarife, Fahrplan, Personal und Systemeinstellungen pflegt der Betreiber selbst im Dashboard – inklusive E-Mail-Diagnose und Datenbereinigung per Klick.

DSGVO von Grund auf

Datenschutz nicht als Nachrüstung, sondern als Architekturprinzip: Datenminimierung, Hashing, Consent-Management und Löschroutinen sind eingebaut.

Ihr Projekt

Ähnliches Vorhaben?

Ob Ticketing, Buchungssystem oder digitale Prozesse: Wir entwickeln produktionsreife Lösungen – von der Konzeption bis zum laufenden Betrieb.

Projekt anfragen