Inspiration
Most care apps pick a lane: plants, or pets, or fish tanks. Real homes do not. You water the pothos, feed the dog, and check the aquarium, then juggle three apps and still ask "did anyone feed the dog?"
PawBloom started from that gap. One timeline for everything you keep alive, reminders the whole household can share, and a companion (Mochi) that actually helps instead of adding another feed to scroll.
What it does
PawBloom is a plant, pet, and aquarium care app for iOS and Android.
- Snap a photo to identify a plant, pet, or the species in a tank, then get a care plan.
- Recurring reminders for watering, feeding, meds, water changes, and vet visits. When someone in the household completes a task, it clears for everyone.
- A real health record: medications, vaccine-card scan, weight and water tests, vet visits, and a shareable care report.
- Invite family with a link, assign tasks, or give a sitter time-boxed access that expires on its own.
- Weather-aware tips, a photo journal, a moderated community, and offline logging that syncs when you are back online.
Start free with one companion. Premium unlocks unlimited care, AI, and family sharing.
How we built it
Expo (SDK 56) and React Native, one codebase for iOS, Android, and web. expo-router for typed routes, TanStack Query for server state, Zustand for local UI, Zod for validation.
The backend is Supabase: Postgres, Auth (email, Apple, Google), Storage, Realtime, and Deno Edge Functions. Care data is default-deny RLS. AI keys never ship in the app. Identification, diagnosis, and moderation go through an ai-proxy (Gemini primary, OpenAI fallback) with quotas and consent.
Reminders are two-layer: on-device expo-notifications so they fire offline, plus timezone-aware server push (digest, streak, win-back, celebrations). Subscriptions go through RevenueCat. Analytics and crash reporting are PostHog and Sentry. The marketing site is at pawbloom.app. The app is localized into 10 languages.
Challenges we ran into
Unifying plants, pets, and habitats (tanks with inhabitants) in one model without feeling like two apps glued together.
Household sharing on top of owner-scoped RLS: when someone feeds the dog, every device has to agree, sitters need a clock that runs out, and a bug cannot leak another family's records.
Reliable reminders across timezones, quiet hours, and airplane mode. Localization that does not leak English at runtime. Store review, associated domains, and keeping secrets off the client while still shipping AI that can see a photo.
Accomplishments that we're proud of
It is live on the App Store and Google Play, not a demo.
A household can share one care schedule. Photo ID works for plants, pets, and tank scans. Vaccine cards import. Care reports export for the vet. Community posts are scanned privately before they go public. Guest accounts can migrate into a real login. Auth tokens are encrypted at rest. The whole product runs on Expo end to end.
What we learned
Shipping to both stores is a product of its own: legal pages, privacy labels, OTA, push tokens, and localization catalogs that CI can fail.
The hard problem is not "add a reminder." It is trust: default-deny data, no AI keys in the binary, and shared care that still feels instant.
Expo let one codebase carry identity, notifications, purchases, and updates all the way to production. That is why PawBloom could be a real household app instead of a weekend prototype.
What's next for Pawbloom - Plant & Pet Care
Home-screen widgets (the data snapshot is already in the app). A more proactive Mochi: schedules that flex with weather, photo trends that notice decline before you ask. Deeper household roles, and growth through invites that already double as the way families start caring together.
Built With
- android
- deno
- eas
- expo-notifications
- expo-router
- expo.io
- google-gemini
- ios
- openai
- postgresql
- posthog
- react
- react-native
- revenuecat
- sentry
- supabase
- tanstack-query
- typescript
- zod
- zustand
Log in or sign up for Devpost to join the conversation.