Maintaining running-event platformz
Joining an established running-event platform to add a bank payment method and a courier, across the app, the API, and the admin panel.
- Client
- 99 Virtual Race (RECT Media)
- Role
- Maintenance and feature development
- Year
- 2026
- Live
- Visit ↗
Flutter · Laravel · PHP · MySQL
The problem
99 Virtual Race lets people run an event anywhere in the world, log the distance, climb a leaderboard, and get a medal posted to them. It’s a mature platform with years of code behind it — a mobile app, an API, and an admin panel for the team running the events.
Mature platforms need new things carefully. Two were needed here: a Maybank payment option for participants who prefer paying at their own bank, and Lion Parcel as a delivery choice for sending medals and merchandise. Both had to arrive without disturbing the payment and delivery options already carrying real money and real parcels every day.
What I built
- Maybank as a payment option. Participants get a virtual account number, pay it from their own banking app, and their entry confirms itself — no receipt to upload, no manual checking by staff. Built to Indonesia’s national banking standard, so it behaves the way people already expect a bank transfer to behave.
- Lion Parcel as a delivery option. Available at checkout, with live delivery tracking the participant can follow from inside the app instead of asking support where their medal is.
- The admin side of both, since a feature isn’t finished when the customer can see it: Lion Parcel shipping labels print from the same screen as every other courier, and the team’s exports and reports include it like anything else.
- Ongoing maintenance alongside the new work — app store release fixes, reporting improvements, and per-event rule changes the events team asked for.
How it turned out
Both options are live for participants. The work spanned all three parts of the platform — app, backend, and admin panel — and shipped without changing how the existing payment and delivery methods behave, which on a system already taking daily orders is the part that matters.