Good Stick
A social app for dog owners to post the sticks their dog finds — photos, ratings, map locations, friends, push notifications.
- Services
- Cloudinary, Expo, Express, Neon, Postgres, React Native
- Platform
- iOS
- Challenge
- Dog owners take a hundred photos of the same thing — their dog proudly carrying a stick — and those photos vanish into a camera roll of 12,000 others. Good Stick is a tiny social network built around that one joy: you post the sticks your dog finds, rate each one, tag where you found it on a map, and follow friends' dogs doing the same. It's not trying to be Instagram. It's the feeling of wanting a dedicated little place for the small, silly things you actually care about, instead of letting them drown in a general-purpose feed.
- What I did
- It's a React Native + Expo app with an Express backend, one Postgres database (hosted on Neon), and Cloudinary handling the photos and videos. The deliberate choice was to keep the backend a single small service talking to a single database — no microservices, no separate media servers — because at a few dozen users that complexity costs money and time and buys nothing. Photos go to Cloudinary instead of being stored and resized myself, sign-in uses Apple and a ready-made auth library rather than hand-rolled passwords, and the map and push notifications lean on off-the-shelf Expo pieces. The lesson for your first app: pick boring, consolidated infrastructure and pay other services to handle the genuinely hard parts (images, auth, delivery) so you can spend your energy on the thing only you can build.
- Impact
- What's live is a real, working app: photo and video posts, dog profiles, friends, likes, view counts, a map of where each stick was found, and push notifications when friends interact — all running on a free-tier backend on Google Cloud Run. It's roughly a year of part-time evenings and weekends (about 110 commits between April 2025 and May 2026), currently in a small private beta of around ten users rather than on the App Store yet, with a pre-publish review underway before launch. The takeaway: a focused app for a narrow, real audience can be fully featured and cost almost nothing to run — you don't need scale or a big budget to ship something complete.
The story.
A social app for dog owners to post the sticks their dog finds — photos, ratings, map locations, friends, push notifications. Deliberately small so it stays charming instead of becoming another general-purpose feed. Currently in private beta with around ten users; App Store launch pending pre-publish review.
The honest hard part wasn't a feature — it was that I'd started with two databases (one for user accounts, a different one for the actual stick data) and had to merge them into a single Postgres database mid-project. That migration took five distinct phases in the commit history and meant rewriting how nearly every screen fetched its data, plus deleting a whole generation of old scripts. It was slow, unglamorous, and entirely self-inflicted — I'd picked the wrong storage split early and paid for it later. If you take one thing from this: your first data decision is the most expensive one to change, so keep it as simple and as singular as you can get away with.
The visuals.