Projects

Win with NEW GEN

A consumer prize-draw platform for the HELL NEW GEN range: one codebase, a separate deployment per country, mobile-first photo upload.

The Win with NEW GEN website home page

About the project

A consumer prize-draw platform for HELL Energy's NEW GEN range, built and operated by Milcomp. The Hungarian site has been live since June 2026.

The challenge

A consumer promotion is short-lived but critical while it runs: during the campaign thousands of people submit at once, the rules are legally binding, and every country prescribes something different for phone formats, data handling and game rules. On top of that, a submission includes a photograph of the ring pull, so the system has to accept large images uploaded from phones, reliably.

The usual answer is to build a separate site per country. That means a separate codebase per market, multiplied maintenance, and versions that are guaranteed to drift apart.

The solution

One codebase, one deployment per country: separate database, separate cache and separate webroot, identical code. Country behaviour is data, not code - timezone, dialling code and phone length, currency, address format, sender and notification recipients all come from configuration. Launching another country is therefore not a development project.

The campaign knows three states: a teaser before the start, the full site during, and a closing page afterwards. The dates come from the game rules and live in the environment, because they are legally binding rather than a developer's choice.

The photo upload, which was the real work

The photograph is the heart of the submission, and it produced most of the lessons.

Uploaded files are accepted on their actual content rather than their extension, and the stored filename never comes from the user. Images go to private storage and are reachable only through a per-record link, so the uploaded material cannot be browsed by guessing URLs.

iPhones, however, upload HEIC, which the server-side image check cannot read - so the minimum-resolution check would silently be skipped. We wrote server-side conversion for it and then deliberately reverted it, because the production environment can decode HEIC but not encode it, and we were not willing to trade a working path for an uncertain one. The answer was conversion and compression in the browser, verified on an iPhone for both library-picked and directly captured photos.

Technology

Laravel on PHP 8.5, Livewire and Tailwind CSS 4, MariaDB and Redis, with a containerised development environment. Bot protection with Cloudflare Turnstile, per-country phone validation, transactional e-mail and error monitoring. The interface is a faithful implementation of the supplied Figma design, on desktop and mobile alike.

What to take from this

On a prize draw, software-side protection is never enough on its own. The system's job is not to decide who won; it is to make sure every piece of evidence behind that decision is complete and available: the submission, the photograph and the timestamp. The prize itself is then confirmed by a person, against the physical evidence. That separation is what makes a promotion defensible, legally and commercially.

The other lesson is about mobile uploads. If most of your users arrive from a phone, image-format handling is not a detail - it is the riskiest part of the project. Budget time for it, and test on real devices rather than in an emulator.