Home/Work/Live modernization of a regulated lottery platform
Regulated platforms · Modernization · Case study

Four framework majors, two countries, zero downtime,and a payments stack the regulatorcan read.

A lottery platform live in Ghana and Nigeria upgraded from Laravel 7 to 11 without missing a draw, with Flutterwave payments, subscription gates and a winners module.

4framework majors upgraded live
2countries, GHS & NGN
0draws missed
1auditable payout sequence
Platform upgrade · Laravel 7 → 11 live
Majors4
Countries2
Downtime0
Happening now
  • Parity · entries · drawspassed
  • Payments · FlutterwaveGHS / NGNverified
  • FXserver-sideapplied once
  • Winners moduleaudit traillive
The problem

New features could not be built on the old foundation and the platform could not be taken offline. Unsupported framework, fragile payments, client-side currency.

The approach

A test suite written first around entries, draws, winners and payouts; currency moved to the server; Flutterwave with verified, idempotent webhooks. Staged majors behind parity checks.

Architecture & AI decisions

Money paths tested before anything moved

Each major deployed behind feature-parity checks. Market detected from the request; FX applied once, server-side. Winners recorded as an auditable sequence.

01

Subscription gates control access to draw types

Subscription gates control access to draw types

02

Flutterwave collections and payouts with idempotent processing

Flutterwave collections and payouts with idempotent processing

03

Server-side FX, never in the client

Server-side FX, never in the client

04

Winners

Winners: selection, verification, payout as ordered records

What shipped.

01

Laravel 11

Four majors, live
02

Flutterwave

Collections and payouts
03

Subscription gates

Access by draw type
04

Winners module

Auditable sequence
05

Server-side FX

Applied once
06

Test suite

Money paths first
07

Parity checks

Per stage
08

Deployment

No downtime
Result
4majors
2countries
0downtime
1reconciled payout rail
Laravel 11PHPMySQLFlutterwaveServer-side FXLaravel 11PHPMySQLFlutterwaveServer-side FX
Selected work

More in production.

All case studies
Engineering & compliance · SaaS

A cable calculator that turns two British Standards into a subscription product.

A permanent free plan converts on limits; Stripe subscriptions with plan gating, verified webhooks, proration and dunning; admin matches Stripe.

2British Standards encoded
1permanent free plan
15Next.js major version
Read the case study
Compliance calculator · Pro
16 mm²
Load 32 kW · 45 m · outdoorwithin limit
Subscriptionactive
Webhook invoice.paid
Retail · Commerce platform

One back office, eight markets, seven currencies — prices set by hand in every one of them.

Per-market price ladders set by hand, a region engine at the request, DDP checkout, entity routing for payments, and a 17-module admin built as one system with roles.

8markets from one codebase
7currencies, never converted
17back-office modules
Read the case study
Back office · Orders
27
#10482 · United Arab EmiratesShipped DDP
#10481 · SingaporePaid
#10480 · United KingdomMade-to-order · day 3 of 12

Have a system
like this in mind?

Send the problem, not a brief. An engineer replies within one business day.

Start a project