Ten years of a racing industry SaaS

Billing, owner communication and race logistics for stables in Australia and New Zealand. Web, two mobile apps, payments.

Role
Tech lead
Years
2016–now
Platforms
Web, iOS, Android
Stack
Laravel (PHP), Node.js, Next.js, ReactJS, React Native, AWS, Stripe

In short: context in one sentence, what I did in one sentence, the result in one sentence. This case study is a template until it has been approved for publishing.

Context

Who the users are, what they were trying to do, and what made it hard.

Constraints

What could not change: a live product, real payments, a small team, time zones.

Outcome

Concrete results that are approved for publishing. Examples, not adjectives.

Lessons

One or two lessons a reader can use in their own product.

Tradeoffs

DecisionWhat we gave upWhy it was worth it
Rebuild the mobile app alongside the old one, then switch overWeeks of running two appsUsers never saw a half-finished app
Block a second payment until the first is confirmedA slightly slower retryNo one is charged twice
Edit settings in a sheet, not a new screenLess room for optionsFewer steps, no lost context

Back to selected work