Zurück zum Portfolio
Prizely — Mandantenfähige Gamified Lead-Gen SaaS

Prizely — Mandantenfähige Gamified Lead-Gen SaaS

Wir entwarfen und entwickelten Prizely, eine mandantenfähige SaaS-Plattform in Laravel 12, die Lead-Erfassung in ein gebrandetes Spielerlebnis verwandelt. Händler registrieren sich, erstellen eine oder mehrere Marken (jede mit eigenem Slug, 2-Farb-Palette, Logo und bis zu 8 Belohnungen mit Bildern), konfigurieren Gewinnprozentsätze pro Belohnung und aktivieren Glücksrad- oder Rubbelgewinn-Spiele. Jede Marke lebt unter einer sauberen /{brand-slug}-URL mit ihrer eigenen visuellen Identität — der Spieler sieht nur diese Marke. Vor dem Spielen füllen Leads ein Formular mit Name, E-Mail und Telefon aus (DSGVO-Einwilligungs-Checkboxen pro Marke konfigurierbar); Dublettenerkennung per E-Mail+Telefon verhindert Mehrfachteilnahme. Gewinner erhalten eine automatisierte Belohnungs-E-Mail mit optionalen Einlösecodes. Guthabenpakete werden via Stripe Checkout erworben (verbrauchsabhängige Abrechnung pro Spiel), mit einer Self-Service-Seite für den Abrechnungsverlauf. Das Admin-Dashboard zeigt Diagramme zu Spielen pro Tag, Belohnungsverteilungsstatistiken, Konversionsraten und eine filterbare, exportierbare Leads-Tabelle (.xlsx). Ein Sandbox-Testspielmodus erlaubt Besitzern die Vorschau von Spielen ohne Guthabenverbrauch oder Lead-Protokollierung. Für Vor-Ort-Veranstaltungen sperrt der Kiosk-Modus das Gerät auf eine Marke mit einem nur für den Besitzer zugänglichen Entsperr-Flow. Die Plattform ist zweisprachig (Griechisch/Englisch), WCAG-2.2-AA-konform und umfasst GSAP-Scroll-Animationen, SEO mit JSON-LD, Hreflang-Alternatives pro Seite und eine llms.txt für KI-Crawler-Sichtbarkeit.

Technologien

Laravel 12 PHP 8.5 Tailwind CSS GSAP Stripe MySQL Multilingual (el/en) JSON-LD / SEO WCAG 2.2 AA Responsive Design Kiosk Mode Email Automation

Herausforderungen

Entwurf einer mandantenfähigen Architektur, bei der jede Marke ihre eigene visuelle Identität (Farben, Logo, Belohnungen) in einer einzigen Laravel-Installation beibehält, Aufbau zweier unterschiedlicher Game-Engines (Rad vs. Rubbeln) mit gemeinsamer Spiel-/Belohnungs-Pipeline und Implementierung einer verbrauchsbasierten Stripe-Abrechnung, die Credits pro Spiel abzieht, ohne für den Spieler spürbare Latenz.

Lösungen

Nutzen Laravels tenant-agnostisches Routing mit {brand}-Wildcards und Policy-basierten Besitz-Gates — eine Codebasis, unendlich viele gebrandete Storefronts. Jedes Spiel wurde als eigenständige Blade/Alpine-Komponente implementiert, die einen gemeinsamen PlayController speist, der Credits validiert, Duplikate verhindert, Belohnungen via gewichteter Zufallsauswahl auflöst und queued Bestätigungs-E-Mails versendet. Stripe-Checkout-Sessions tragen Metadaten (pack_id, brand_id, user_id), die via Webhook erfüllt werden; eine Credit-Balance-Cache-Spalte vermeidet DB-Schreibvorgänge pro Spiel. Der Kiosk-Modus verwendet ein Session-Flag + Entsperr-PIN-Flow mit ratenbegrenzten Versuchen. Das Admin-Dashboard nutzt Chart.js für Spiele/Belohnungsverteilung und eine filterbare, DataTables-basierte Leads-Tabelle mit .xlsx-Export.