HabitHero
A chore and reward app for families. Parents set the quests, kids earn and spend, and the server decides what counts.











App Store id 6776681312
Perth, Western Australia
I do the product thinking, the design, the native iOS and Android, the backend and the brand. There is no handoff, and no account manager in between.
I
HabitHero is live on the App Store. Native SwiftUI and Kotlin, Firebase behind it, and a reward economy checked server-side so kids cannot cheat it.
A chore and reward app for families. Parents set the quests, kids earn and spend, and the server decides what counts.











App Store id 6776681312
The free companion app. Kids get their own build, their own widgets, and they customise their own banners and cards.




App Store id 6779511653
II
SK Sports needed a booking platform, so I built one and the coach stopped renting the product he was paying for monthly. He owns the code. Pitchside is the same instinct pointed at a whole state.
A whole system for one Perth football coach. A four-step application against his real availability, passwordless customer accounts, email attendance confirmations, and the admin that runs it. It replaced the scheduling product he was renting.







React, TypeScript, Vite and Firebase, with Cloud Functions behind it. Done as a barter deal. Nothing from the admin or from a customer's account is shown; the sign-in screen is where the public view stops.
A private, login-gated booking portal for a Perth clinic. Clients sign in, book, and nobody else sees anything.


A private client portal. The sign-in screen is all I will ever show of it.
Where a WA parent finds the next trial, clinic or camp. Search by suburb and age, browse clubs and academies, and let organisations list their own sessions.


Next.js and Postgres, with accounts, listings and payments. It runs on my own server behind a Cloudflare tunnel, not on someone else's platform.
III
I wrote and typeset the Cantera playbook, 195 pages, then built the shop that sells it. Every download is watermarked with the buyer's own licence in a Cloud Function.
A youth football playbook for parents. I wrote it, typeset it, drew the diagrams, built the shop and wired the fulfilment.


AU$249 through Stripe. Every PDF is watermarked per buyer in a Cloud Function.
A South African food shop, posted from Perth. Gorima's masalas, curry pastes and pour-ons, plus the grocery labels people grew up with.


Next.js on Firebase App Hosting, Firestore for stock and Stripe for checkout. Twenty-three products, real photography, Australia wide delivery.
IV
These are not client work. I built them because I wanted to see if I could, which is how most of my best ideas start. Both clubs run a different site, and both of these sit at their own address.
An unsolicited redesign of futsalsupaliga.com.au. Twenty divisions, real fixtures, 21 club crests, and an admin area with a round-robin season builder.


Nobody asked for this. I built it as a pitch.
A club site for Cockburn Wolves: fixtures, teams, news and registration, with a results ticker along the bottom and a season that knows when it is between rounds.


Nobody asked for this either. The club runs a different site, and this one is a pitch sitting at its own address.
V
Four pieces here are not deployed. There is no link on any of them, because there is nothing honest to link to yet. You get the screens and the build instead.
A painting company site with a Firestore quote form, SMS notification to the owner through Twilio, and a recent-work gallery served from Storage.


Built and never deployed, so there is nothing to open. It runs in demo mode until the Firebase keys are added, and the hero photograph is a placeholder rather than the painter's own work.
A verified player record for youth football. Club-confirmed metrics, coach evaluations and scout-ready video, built so a claim about a child can be checked rather than taken on trust.






Nothing is deployed and nothing about a player is indexable by design. The passport shown is a fictional demo player: the database itself refuses to publish a record until a guardian's consent is on the ledger, so the demo went through the same gate. A scout never signs in; they get a time-limited link from the guardian or the club.
Match video in, a player's physical and positional profile out. Detection, camera stitching across five views, identity continuity, then distance, sprints, accelerations and where on the pitch a player actually spent the game.


Research in progress, not a finished product. It runs on my own machine against my own footage. These are real outputs from a real run, and no player is identified in them.
A focus app for people with ADHD. SwiftUI and SwiftData, StoreKit 2, WidgetKit, and a reward layer earned through streaks.






Built and not launched, so there is nothing to open yet.
Everything above is one person's work. The interface, the native apps, the backend, the payments, the admin screens, and the words.
What I build, you keep. The code and the Firebase project are yours, which is the point of building it rather than renting it.
I reply within one business day. If it is not a fit, I will say so and point you somewhere better.