LeoVegas Gaming Platform
Frontend engineer — game experience, responsible gambling features, internal CMS
Overview
LeoVegas operates a real-money gaming platform across more than a dozen regulated markets — UK, Spain, Italy, Sweden, Australia, and more. Each market has its own licensing authority with specific technical requirements: session limits in the UK, reality checks in Spain, self-exclusion systems in Sweden.
I worked on two parts of the platform: Fulcrum Frontend, the consumer-facing application used by hundreds of thousands of players, and LeoAdmin, the internal CMS that operators use to manage the game catalogue, markets, and payment configurations. The same codebase compiled into separate desktop, mobile, and tablet applications.
Platform Architecture
Consumer app, internal CMS, and five regulated markets — all from one codebase. Highlighted features are what I owned: the full game experience layer and the responsible gambling tools legally required in each market.
parallel-webpack
three builds
type-safe, no over-fetching
The Challenge
The hardest constraint was regulatory compliance across markets. The same game launch flow had to behave differently depending on which country the player was in: show a session time reminder in the UK after 60 minutes, display a balance summary in Spain every 30 minutes, block certain games entirely in Italy. This couldn't be hacked with if/else — it needed a clean architecture that let market-specific rules compose with the core flow without making the codebase unmaintainable.
Technical Highlights
One codebase, three platforms
The Fulcrum codebase compiled into three distinct applications — desktop, mobile, and tablet — using parallel-webpack with separate build configurations. Shared business logic lived in a common layer, while platform-specific UI components were conditionally included. This avoided code duplication while letting each platform optimise its own layout and interaction patterns.
Relay + GraphQL for precise data fetching
The platform used Relay as its GraphQL client, with the relay-compiler generating type-safe query code at build time. Each component declared exactly the data it needed via fragments — no over-fetching, no prop-drilling of unused fields. For a game lobby with dozens of game tiles each needing different metadata, this made a measurable difference to payload size and render performance.
Responsible gambling compliance layer
I built and maintained the responsible gambling features: Reality Check (periodic session summaries shown during play), session time limits, deposit limits, and self-exclusion flows. Each feature had market-specific variants — the Spanish Reality Check had different content and timing than the UK version — while sharing the same underlying session tracking logic. Getting these right mattered: non-compliance could cost the company its operating licence.
Game catalogue management (LeoAdmin)
LeoAdmin was the internal CMS that operators used to manage the game catalogue across markets. I added Live Casino configuration, jackpot settings, and market-specific game metadata (different titles, thumbnails, and availability rules per country). The admin connected to CouchDB for game data and exposed both a REST API and an early GraphQL interface — one of the first GraphQL implementations in the company.
Migration to React at scale
When I joined, parts of the platform were still on older JavaScript patterns. I contributed to the migration to React across the codebase — converting legacy views to components, introducing Redux for state management, and establishing patterns for how game data flowed from the API through to the UI. The migration happened incrementally without taking the platform offline.