The problem
Pet owners use separate apps for walks, vet schedules and finding services nearby. Mosey puts them in one: GPS walks, health reminders, local services and a community built around walking, where your walks claim hexes on the map that fade if you stop.
Who did what
Mosey is co-owned with rensch2007, whose GitHub account holds the repo. I made nearly every product decision, sign-in being the exception, and authored most of the commits. Another collaborator built sign-in and several other features, including translations and the vet-visit PDF export, and a third made a few setup changes. Claude Code wrote most of the code and is co-author on 474 of the 496 commits. It also drafted the launch plan and ran the pre-launch audit.
Constraints
- The app never talks to the database directly. Every request goes through the Express backend.
- No row-level security: the backend uses the service key and checks ownership in code.
- A migration that has been applied is never edited, only followed by a new one.
- A “Deleted Features: Do NOT Recreate” list stops removed features from coming back.
The trade-off
Skipping row-level security kept every access rule in one place, the backend. The cost is that the database enforces nothing by itself, so all the weight sits on the backend’s checks and the review of every change to them.
Outcome
- In TestFlight, not yet submitted to either store. Fixes from the pre-launch audit are the work before submission.
- That audit used 33 agents across 14 areas and re-checked every finding against the code before reporting it.
- 137 SQL migrations and 496 commits from January to August 2026.
How it was built
- Five agents split the work.
api,dbandmobilebuild,reviewerchecks every diff (“guilty until proven safe”), andgitmerges a branch only when the reviewer has no must-fix issues. - Seven slash commands, such as
/add-feature(database, then API, then screen) and/new-migration. - Seven rule files in
.claude/rules/instead of one longCLAUDE.md. - The Supabase MCP server, and a skill that generates the App Store screenshots.




