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
| Decision | What we gave up | Why it was worth it |
|---|---|---|
| Rebuild the mobile app alongside the old one, then switch over | Weeks of running two apps | Users never saw a half-finished app |
| Block a second payment until the first is confirmed | A slightly slower retry | No one is charged twice |
| Edit settings in a sheet, not a new screen | Less room for options | Fewer steps, no lost context |