Projekt: Event-Plattform
Fullstack
Advanced
Das Szenario
Section titled “Das Szenario”Das lokale Kulturzentrum verzweifelt. Sie verkaufen Tickets noch per Excel-Liste und Email. Das führt zu Doppelbuchungen, Chaos am Einlass und genervten Gästen. Sie brauchen eine Echtzeit-Ticketing-Plattform.
Deine Rolle: System Architect & Lead Developer. Du löst ein Problem, das schon große Firmen (Ticketmaster) ins Schwitzen bringt: Concurrency (Gleichzeitigkeit).
Deine Technischen Entscheidungen
Section titled “Deine Technischen Entscheidungen”Dieses Projekt ist technisch das anspruchsvollste.
1. Das “Race Condition” Problem
Section titled “1. Das “Race Condition” Problem”Stell dir vor: Es gibt noch ein Ticket für das Konzert.
- User A klickt “Kaufen”.
- User B klickt “Kaufen” (eine Millisekunde später).
- Beide sind im Checkout. Wer bekommt das Ticket?
- Entscheidung: Wie löst du das? (Datenbank-Locks? Reservierungen mit Timeouts? Optimistic vs. Pessimistic Locking?)
2. QR-Code & Einlass
Section titled “2. QR-Code & Einlass”- Szenario: 500 Leute stehen vor der Tür. Der Einlass muss schnell gehen.
- Aufgabe: Generiere fälschungssichere Tickets.
- Frage: Was steckt im QR-Code? (Nur die ID? Ein signierter Token?) Und wie baust du den Scanner (Webcam-Zugriff im Browser)?
3. Das Datenmodell: Seatmap
Section titled “3. Das Datenmodell: Seatmap”(Optional für Profis)
- Wenn es Sitzplätze gibt: Wie speicherst du “Reihe 5, Platz 12”? Und wie zeigst du an, dass dieser Platz jetzt gerade von jemand anderem angesehen wird?
Anforderungen (The Problem Space)
Section titled “Anforderungen (The Problem Space)”Das System muss robust sein:
- Konsistenz: Niemals mehr Tickets verkaufen als vorhanden sind.
- Verfügbarkeit: Der Admin muss jederzeit sehen: “Wie voll ist der Saal heute Abend?”
- Kommunikation: Tickets müssen automatisch per Mail versendet werden. (Integration von Mail-Diensten wie SendGrid/Resend).
Freie Wahl – Der Tech Stack
Section titled “Freie Wahl – Der Tech Stack”| Ebene | Fragen an dich |
|---|---|
| Backend | PHP oder Node.js. Node.js ist oft stark bei Concurrency, aber auch PHP hat moderne Lösungen. Was wählst du und warum? |
| Datenbank | Transaktionen (ACID) sind hier lebenswichtig. Welche Datenbank bietet dir die nötige Sicherheit und Performance? |
| Realtime | Brauchst du WebSockets, um Plätze auf der Seatmap live als “blockiert” anzuzeigen? |
Lernziele
Section titled “Lernziele”- Systemarchitektur: Wie verhindert man Daten-Inkohärenz in verteilten Systemen?
- Sicherheit: Wie verhindere ich, dass jemand Tickets fälscht oder sich Plätze erschleicht?
- Integrationen: Email-Versand, Payment-Mocking, Kamera-APIs.
Tipps zum Start
Section titled “Tipps zum Start”- Keep it ugly: Das Design ist zweitrangig. Die Logik “Ticketkauf” muss zu 100% sitzen.
- Stress Test: Versuche, dein eigenes System kaputt zu machen. Öffne zwei Browser-Fenster und versuche, das letzte Ticket gleichzeitig zu kaufen.
Fragen?
Section titled “Fragen?”Hast du eine Idee, wie du das “Race Condition” Problem löst? Erzähl uns von deinem Locking-Mechanismus!