Blue Plate Special Field Report Flight Log
HoselRocket
One codebase, three platforms: an AI golf coach on iPhone, Android and the web.
A subscription golf-improvement app we designed, built and run end to end. The iPhone app, the Android app and the web app share one account and one backend.
- iPhone
- Android
- Web
hoselrocket.app In its planned off-season — back in May.
What it does
-
GPS round tracking
Logs every shot by GPS, measures distances for you, and replays the round shot by shot on a satellite map.
-
AI caddie & coach
Club suggestions during a live round, and coaching built on each player's own stats and history.
-
Scorecard scanning
Snap a photo of a paper scorecard and the AI reads the scores, the course and the date.
-
Swing video analysis
Upload a swing video. The AI reviews the frames and explains the fixes in plain language.
-
Offline play
Download a course, play with no signal, and sync everything afterwards.
-
Friends & challenges
An activity feed, head-to-head challenges, and tournaments with brackets and leaderboards.
Under the hood
How it's built, for the technically curious.
- 8 weeks
- from first commit to live on the App Store and Google Play
- 1 codebase
- a TypeScript monorepo behind the web app, both mobile apps and the API
- 9 AI features
- built on a large language model, with per-plan monthly limits enforced on the server
- 7,800+ courses
- golf courses on interactive maps, backed by Postgres with row-level security
-
Three billing channels, one membership
Stripe on the web plus Apple and Google in-app purchases through RevenueCat, kept in sync by webhooks and a reconciliation job. A price drop shipped across all three channels: web subscribers moved to the new price automatically, and App Store and Google Play subscribers kept their original plans.
-
Offline rounds
Download a course while you have signal, play the round with none, and sync it afterwards. Finishing a round sets off an automatic chain: scorecard, feed post, badges, challenges and a handicap recalculation.
-
Engineered for the off-season
Two matching switches, one for the web and one for mobile, moved the web app and both mobile apps to a “closed for the winter” screen, backed by a full data archive verified table by table and a documented restart.
- TypeScript
- React 19
- Vite
- React Native / Expo
- Node.js / Express
- PostgreSQL (Supabase)
- Generative AI
- Stripe
- RevenueCat
- Cloudflare
- Leaflet / Google Maps
Place Your Order Send Word Send Airmail
Want an app like this?
Hit Contact us and a quick terminal walks you through a few questions (what you're building, which platforms, and a ballpark estimate), then sends it straight to us.
Prefer email? hello@flyingmarmot.ca