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.
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.
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.
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.
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.