Mojo and Co — dog grooming business app
A bespoke iOS and Android app for a one-groomer dog grooming business. Staff get the whole business in one place: client and dog records, a searchable dog list, a time-axis diary, groom phase timers, photos, invoicing and an equipment register. Clients get their own details and bookings, can request an appointment and fill in the intake form online instead of on paper.
The full story
Mojo and Co is a one-person grooming business run from three paper forms: a client card, a dog card and an intake sheet with the policies a new owner agrees to. The brief was to put the whole thing on the groomer's phone without losing the working notes that make a small business run — which dogs need a firm hand, which owners like a chat, who still needs a leaflet — and to give clients a way to see their own bookings and ask for new ones without a phone call.
The staff side is built around the diary: a time-axis day and week view you swipe through, with every breed's typical groom time and price seeded as a reference sheet the groomer can edit. Blocked-out time (lunch, a vet run, a week away) draws as a hatched band under the bookings and refuses client requests that land on it. Booking two dogs from one household goes in as a single visit with one length, so the diary shows how long the groomer will really be with them. Groom phase timers, per-visit photos and a groom report for every appointment sit on the dog's profile, alongside a five-grade handling scale whose wording the groomer owns.
Two audiences share one codebase, so the access rules got the most attention. A client can only ever reach their own records; staff-only fields such as temperament notes and private client notes are stripped from every client-facing payload at the serializer layer, and clients can read but never edit or delete the rows they can see. Each of those is a separate layer with its own tests, because one of them on its own was found wanting during development.
Signing in works with a username or an email, password resets are self-service, and the app can lock behind Face ID or a fingerprint per account. The backend runs in Docker behind Caddy on a Hetzner host and deploys itself on every push to main once the test suite passes, with an automatic rollback if the health check fails. App releases are cut from a git tag: Xcode Cloud builds it, and a workflow writes the release notes from the changelog and submits it for review.