Skip to content
1 / 13  HabitHero

Perth, Western Australia

One person. The whole job.

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

I ship to the App Store.

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.

Live / App Store

HabitHero

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

HabitHero parent hub
Parent hub. Everything a parent runs, on one screen.
Creating a quest
Creating a quest. Set the job, the points, and when it repeats.
Reward store
Reward store. The parent decides what points buy.
Chore schedule
Schedule. Chores by day, with a holiday mode.
Rewards ledger
Rewards ledger. What was earned, and what was spent.
Parent dashboard
Parent dashboard. Streaks, approvals and history.
Theme picker
Themes. Each family picks its own look.
HabitHero on iPad
HabitHero on iPad. The same app, laid out for the bigger screen.
iPad rewards
iPad rewards. More on screen without a second design.
iPad customising
iPad customising. Kids style their own cards.
habitheroapp.net
The marketing site that sells it.

App Store id 6776681312

Live / App Store

HabitHero Kids

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

Kids home screen
Kids home. Today's jobs, and what they are worth.
Kids reward store
The reward store, from the kid's side.
Kids customising
Customising. Kids pick their own card art.
Kids banner styles
Banner styles. Their screen, not mine.

App Store id 6779511653

II

I build the system, not just the front page.

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.

Live / Client

SK Sports

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.

SK Sports current site
The current build. One coach, one player, and an application rather than a booking.
SK Sports application wizard, step one
The application. Four steps, starting with what the player is here to work on.
SK Sports booking step with open times
The booking system. Times come from the coach's actual availability, with the next open slot called out, not a form he reads later. Walked through on the build's mock backend so no real application was created.
SK Sports weekly schedule
The schedule. Junior squads on fixed nights, private sessions by arrangement, one button either way.
SK Sports football programme page
The football programme. Each discipline gets its own page and its own case.
SK Sports customer sign-in
Customer sign-in. An emailed link and no password, and this screen is all of the account I will show.
SK Sports booking step on a phone
Picking a time on a phone, which is where a parent does it.

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.

Live / Client

Skylah Health and Beauty

A private, login-gated booking portal for a Perth clinic. Clients sign in, book, and nobody else sees anything.

Skylah sign-in screen
The sign-in screen. This is the whole of what is public.
Skylah sign-in on a phone
The same sign-in on a phone.

A private client portal. The sign-in screen is all I will ever show of it.

Live / My own product

Pitchside

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.

Pitchside opportunity search
Find a session by suburb, age and activity. Distances are real, and the copy says they are approximate.
Pitchside on a phone
On a phone, which is where a parent actually looks.

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 make the product, not just the packaging.

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.

Live / My own product

Cantera Method

A youth football playbook for parents. I wrote it, typeset it, drew the diagrams, built the shop and wired the fulfilment.

canteramethod.net
The site. One page, one product, one decision.
canteramethod.net on a phone
On a phone, which is where most of the reading starts.

AU$249 through Stripe. Every PDF is watermarked per buyer in a Cloud Function.

Live / Client

Saffa Pantry Perth

A South African food shop, posted from Perth. Gorima's masalas, curry pastes and pour-ons, plus the grocery labels people grew up with.

Saffa Pantry Perth storefront
The shop. Real products, real photography, and a cart that takes money.
Saffa Pantry on a phone
The same shop on a phone.

Next.js on Firebase App Hosting, Firestore for stock and Stripe for checkout. Twenty-three products, real photography, Australia wide delivery.

IV

Nobody hired me to build these.

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.

Concept / Not commissioned

Supa Liga

An unsolicited redesign of futsalsupaliga.com.au. Twenty divisions, real fixtures, 21 club crests, and an admin area with a round-robin season builder.

Supa Liga redesign
Ladders, fixtures and results across twenty divisions.
Supa Liga on a phone
The same on a phone, which is where a parent checks the score.

Nobody asked for this. I built it as a pitch.

Concept / Not commissioned

Cockburn Wolves FC

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.

Cockburn Wolves FC concept site
Indoor, outdoor, one pack. News, fixtures and a live results ticker.
Cockburn Wolves on a phone
The same club site on a phone.

Nobody asked for this either. The club runs a different site, and this one is a pitch sitting at its own address.

V

I will tell you what is not finished.

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.

Built / Not launched

Pure N Simple Painting

A painting company site with a Firestore quote form, SMS notification to the owner through Twilio, and a recent-work gallery served from Storage.

Pure N Simple Painting site
The site, running off disk. Quote form, WhatsApp, and the trust row underneath.
Pure N Simple Painting on a phone
The same page on a phone.

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.

In build / Not deployed

Axiom Elite

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.

Axiom Elite player passport for a fictional demo player
The passport. A fictional player, a monogram where a photo would go, and a coach evaluation that carries the name of the person who wrote it.
Verified metrics on the demo passport
Verified metrics. Sprint, jump and recovery tests, each one club-verified before it can appear, with the conditions recorded.
Axiom Elite landing page
The front door. Records held by clubs and guardians, and the line the whole product is built on: proof, not promotion.
Axiom Elite sign-in
Sign-in. A single-use emailed link for club staff and guardians. Scouts never get an account.
Axiom Elite club store
The club store, with delivery priced into the listing for the three countries it ships to.
The demo passport on a phone
The same passport on a phone, which is where a scout opens the link.
project
axiom-elite
next
16.3
database
postgres 17, prisma
auth
next-auth
payments
local checkout simulation
vision
python, separate analysis workstation
status
in build
deployed
no
indexable
no, by design

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.

In build / Not deployed

Football tracking and stats

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.

Team A position heat map on a pitch
Team A, every supported passage of the match. The pitch outline is measured; the box and circle are template values, and the output says so on itself.
Team B position heat map on a pitch
Team B, the same match. Two teams separated by kit colour, not by anyone typing in a squad list.
project
ai-tracker
detection
yolo, onnx runtime on cuda
panorama
5 views, 4938 x 1606, 52328 frames
tracking
python, with a c++ comparison tracker at parity
agreement
99.85% against the python baseline
tests
557 passing
status
in build
deployed
no

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.

Built / Not launched

FocusFlow

A focus app for people with ADHD. SwiftUI and SwiftData, StoreKit 2, WidgetKit, and a reward layer earned through streaks.

FocusFlow app icon
The app icon.
FocusFlow home
Home. What you are doing now, and nothing else.
FocusFlow dashboard
Dashboard. Streaks and sessions over time.
FocusFlow onboarding
Onboarding. Three screens, then you are working.
FocusFlow paywall
Paywall. StoreKit 2, one purchase.
FocusFlow reward layer
The reward layer. Real-world rewards, earned by streak.

Built and not launched, so there is nothing to open yet.

Here is what that actually means.

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.

One person reads this. That is me.

I reply within one business day. If it is not a fit, I will say so and point you somewhere better.

What do you need?
Roughly what is the budget?

Optional. It only tells me what shape of thing we are talking about.

Or just email me: hello@aspectdigitalmedia.net