Tilbage til portfolio
Prizely — Multi-tenant Gamified Lead-Gen SaaS

Prizely — Multi-tenant Gamified Lead-Gen SaaS

Vi designede og udviklede Prizely, en multi-tenant SaaS-platform i Laravel 12, der gør lead-indfangning til en branded spiloplevelse. Forhandlere registrerer sig, opretter et eller flere brands (hver med egen slug, 2-farvepalet, logo og op til 8 belønninger med billeder), konfigurerer gevinstprocenter pr. belønning og aktiverer Lykkehjul- eller Skrab-og-Vind-spil. Hvert brand lever på en ren /{brand-slug}-URL med sin egen visuelle identitet — spilleren ser kun dét brand. Før de spiller, udfylder leads en formular med navn, e-mail og telefon (GDPR-samtykkeafkrydsningsfelter kan konfigureres pr. brand); duplikatdetektion via e-mail+telefon forhindrer misbrug. Vindere modtager en automatiseret belønningsmail med valgfrie indløsningskoder. Kreditpakker købes via Stripe Checkout (målt pr.-spil-fakturering) med en selvbetjeningsside til faktureringshistorik. Admin-dashboardet viser spil-pr.-dag-diagrammer, belønningsfordelingsstatistik, konverteringsrater og en filtrerbar, eksporterbar leads-tabel (.xlsx). En sandboxed testspiltilstand lader ejere forhåndsvise spil uden at forbruge credits eller logge leads. Til fysiske events låser kiosk-tilstand enheden til ét brand med en ejer-only oplåsningsflow. Platformen er tosproget (græsk/engelsk), WCAG 2.2 AA-kompatibel og inkluderer GSAP-scrollanimationer, SEO med JSON-LD, hreflang-alternativer pr. side og en llms.txt for AI-crawler-synlighed.

Teknologier

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

Udfordringer

At designe en multi-tenant-arkitektur, hvor hvert brand bevarer sin egen visuelle identitet (farver, logo, belønninger) under en enkelt Laravel-installation, at bygge to forskellige spilmotorer (hjul vs. skrab), der deler en fælles spil-/belønningspipeline, og at implementere målt Stripe-fakturering, der fratrækker credits pr. spil uden mærkbar latenstid for spilleren.

Løsninger

Brugte Laravels tenant-agnostiske routing med {brand}-wildcards og policy-baserede ejerskabsgates — én kodebase, uendelige branded butiksfacader. Hvert spil er bygget som en selvstændig Blade/Alpine-komponent, der føder en delt PlayController, som validerer credits, forhindrer dubletter, løser belønninger via vægtet tilfældig udvælgelse og afsender queued bekræftelsesmails. Stripe Checkout-sessioner bærer metadata (pack_id, brand_id, user_id), der opfyldes via webhook; en credit-balance-cache-kolonne undgår DB-skrivninger pr. spil. Kiosk-tilstand bruger et session-flag + oplåsnings-PIN-flow med rate-begrænsede forsøg. Admin-dashboardet bruger Chart.js til spil-/belønningsfordeling og en filtrerbar, DataTables-drevet leads-tabel med .xlsx-eksport.