Projektek

Win with NEW GEN

Fogyasztói nyereményjáték-platform a HELL NEW GEN termékcsaládhoz: egy kódbázis, országonként külön telepítés, mobilra optimalizált fotófeltöltés.

A Win with NEW GEN weboldalának kezdőoldala

A projektről

A HELL Energy NEW GEN termékcsaládjához készült nyereményjáték-platform, amelyet a Milcomp épített és üzemeltet. A magyar oldal 2026 júniusa óta él.

A kihívás

Egy fogyasztói promóció rövid életű, de amíg fut, addig kritikus: kampányidőszakban egyszerre sok ezer ember próbál beküldeni, a szabályzat jogilag kötött, és minden ország mást ír elő telefonszám-formátumban, adatkezelésben és játékszabályban. Ráadásul a beküldés része egy fénykép a nyitófülről, tehát a rendszernek mobilról feltöltött, nagy méretű képeket kell megbízhatóan fogadnia.

A klasszikus megoldás az, hogy minden országra külön oldalt fejlesztenek. Ez országonként külön kódbázist jelent, többszörös karbantartással és garantáltan szétcsúszó verziókkal.

A megoldás

Egy kódbázis, országonként külön telepítés: saját adatbázis, saját cache és saját webroot, de azonos kód. Az országfüggő viselkedés adat, nem kód: időzóna, telefon-előhívó és -hossz, pénznem, címformátum, feladó és értesítendő címzettek mind konfigurációból jönnek. Egy új ország indítása így nem fejlesztés.

A kampány három állapotot ismer: beharangozó a start előtt, teljes oldal a játék alatt, lezáró oldal utána. Az időpontok a szabályzatból jönnek és környezeti változóban élnek, mert jogilag kötöttek, nem fejlesztői döntés kérdése.

A fotófeltöltés, ami a valódi feladat volt

A beküldés szíve a fénykép, és itt jött a legtöbb tanulság.

A feltöltött fájlokat nem a kiterjesztésük, hanem a tényleges tartalmuk alapján fogadjuk el, a tárolt fájlnév pedig sosem a felhasználótól érkezik. A képek privát tárolóba kerülnek, és csak rekordhoz kötött, egyedi linken keresztül érhetők el, tehát a feltöltött anyag nem böngészhető végig kitalált URL-ekkel.

Az iPhone-ok viszont HEIC formátumban töltenek fel, amit a szerveroldali képellenőrzés nem tud beolvasni - így a minimális felbontás ellenőrzése csendben kimaradna. Írtunk rá szerveroldali konverziót, majd szándékosan visszavontuk, mert az éles környezet a HEIC-et olvasni tudja, írni nem, és nem akartunk egy működő útvonalat egy bizonytalanért feláldozni. A megoldás a böngészőben történő átalakítás és tömörítés lett, iPhone-on ellenőrizve, könyvtárból választott és közvetlenül fényképezett képre egyaránt.

Technológia

Laravel, PHP 8.5, Livewire és Tailwind CSS 4, MariaDB és Redis, konténerizált fejlesztői környezettel. Botvédelem Cloudflare Turnstile-lal, országonkénti telefonszám-validáció, tranzakciós e-mail, hibafigyelés. A felület a kapott Figma-terv pontos megvalósítása, asztali és mobil nézetben egyaránt.

Amit ebből érdemes elvinni

Egy nyereményjátéknál a szoftveres védelem önmagában sosem elég. A rendszer feladata nem az, hogy egyedül eldöntse, ki nyert, hanem hogy a döntéshez minden bizonyíték hiánytalanul rendelkezésre álljon: a beküldés, a fénykép és az időbélyeg. A nyereményt ezután ember igazolja, a fizikai bizonyítékkal összevetve. Ez a szétválasztás az, ami egy promóciót jogilag és üzletileg is védhetővé tesz.

A másik tanulság a mobilos feltöltésről szól: ha a felhasználók zöme telefonról jön, akkor a képformátum-kezelés nem részletkérdés, hanem a projekt legkockázatosabb pontja. Érdemes rá időt tervezni, és valódi készüléken tesztelni, nem emulátorban.