-
-
pet owner homepage
-
pet owner bookings screen
-
pet owner chat page
-
provider listing profile view
-
pet owner profile page
-
Pet owner premium (Boo pro) purchase page
-
provider homepage
-
provider manage booking screen
-
provider profile page
-
provider manage services page
-
provider set working hours screen
-
provider premium purchase page
-
boo user notification page
-
provider verification doc submission page
-
Boo app icon
Inspiration
Finding reliable pet care can be surprisingly fragmented. Pet owners often depend on social media posts, informal referrals, phone calls, and disconnected payment or messaging tools. At the same time, independent pet-care providers need a simple way to present their services, manage bookings, communicate with clients, and understand their earnings. I built Boo Pet Care to bring those experiences into one mobile marketplace. Owners can discover suitable providers, manage their pets, create bookings, chat with providers, receive notifications, and leave reviews. Providers can create service profiles, set availability, manage bookings, communicate with clients, and monitor their work from a dedicated dashboard.
What it does
Boo Pet Care supports two types of users:
Pet owners
- Create and manage pet profiles
- Discover nearby pet-care providers
- Review provider services and availability
- Create and manage bookings
- Chat with providers within an existing booking
- Receive booking and account notifications
- Leave reviews after completed services
Pet-care providers
- Build a provider profile
- Configure services, pricing, availability, and working hours
- Receive and manage booking requests
- Communicate with owners through booking chat
- Record completed service payments
- View ordinary dashboard statistics
Boo also includes two optional premium memberships powered by RevenueCat:
- Boo Plus allows owners to create additional pet profiles beyond the first free pet.
- Boo Pro provides advanced recorded-earnings insights for providers.
The free experience remains useful: owners retain discovery, booking, chat, notifications, reviews, and one pet profile, while providers retain profiles, services, bookings, availability, chat, and ordinary statistics.
How I built it
The mobile application was built with Flutter. The backend uses NestJS, TypeORM, and PostgreSQL, and is deployed on Render. On admin web view side , Cloudinary stores provider-verification documents, while the backend controls the associated verification workflow and access.
I used:
- RevenueCat for Test Store purchases, role-specific offerings, subscription restoration, and entitlement lifecycle management
- RevenueCat webhooks to project subscription state into PostgreSQL
- Stream Chat for booking conversations
- OneSignal for push-notification integration
- PostgreSQL as the authoritative source for application and entitlement data
RevenueCat uses the authenticated Boo user UUID as the App User ID. Owners and providers have separate offerings and entitlements, preventing Boo Plus from unlocking provider features or Boo Pro from unlocking owner features.
Premium enforcement is not based solely on the Flutter interface. RevenueCat sends authenticated webhook events to the backend, where entitlement state is processed idempotently and stored in PostgreSQL. When an owner attempts to create an additional pet, the backend checks for an active and unexpired boo_plus entitlement inside a database transaction.
Challenges I faced
The most difficult challenge was synchronizing identity and subscription state across Flutter, RevenueCat, the backend, and PostgreSQL. RevenueCat initially created anonymous customers before authentication completed. Logout and login operations could also overlap, allowing an older logout operation to clear a newer user identity. I corrected this by serializing identity mutations, tracking the active SDK identity, rejecting stale results, and verifying the RevenueCat App User ID after login. Another challenge was keeping the app synchronized immediately after a Test Store purchase. A purchase could succeed while the interface continued showing the free membership state. I added reactive entitlement updates, CustomerInfo reconciliation, expiration timers, cache invalidation, and protection against stale entitlement snapshots. The additional-pet flow exposed an important architectural lesson: client-side premium checks improve the user experience, but they must not be the security boundary. The backend now makes the final decision. It locks the owner record, counts existing pets, verifies the projected entitlement, and inserts the new pet transactionally. I also had to handle subscription expiration, account switching, delayed webhooks, duplicate events, role mismatches, slow emulator initialization, and responsive premium screens without allowing stale access to leak between accounts.
Accomplishments that we're proud of
I am particularly proud that Boo Pet Care is more than a paywall demonstration. It is a working two-sided marketplace with separate owner and provider experiences, booking management, chat, notifications, reviews, provider availability, and premium features connected to real application value. The RevenueCat integration supports role-specific offerings, authenticated Boo UUID identities, purchases, restoration, expiration, logout, and account switching. RevenueCat webhooks project subscription events into PostgreSQL, while the backend independently enforces Boo Plus access for additional pet creation. The focused premium-access suite contains 15 passing tests. I also successfully demonstrated Boo Plus unlocking additional pet creation and Boo Pro unlocking advanced provider earnings insights through RevenueCat’s Test Store.
What I learned
This project taught me that subscription integration is much more than displaying a paywall. A reliable implementation must account for identity transitions, webhook authentication, idempotency, stale asynchronous results, expiration, account switching, and server-side authorization. I also learned how important it is to distinguish presentation state from authoritative access control. Flutter can show whether a feature appears available, but protected backend mutations must independently verify entitlement state. The focused premium-access test suite now contains 15 passing tests covering free access, role separation, entitlement mismatch, expiration, account switching, immediate post-purchase activation, and premium upgrade routing.
What’s next for Boo
Future versions of Boo Pet Care could introduce pet health timelines, health-record exports, care reminders, CareLoop rebooking, advanced booking analytics, private client notes, automated rebooking suggestions, and featured provider listings. These features are currently presented only as Coming soon and are not represented as completed functionality. The current premium implementation focuses on two working, demonstrable value slices: additional pet profiles through Boo Plus and advanced earnings insights through Boo Pro.
Built With
- chat
- cloudinary
- dart
- firebase
- flutter
- nestjs
- onesignal
- postgresql
- render
- resend
- revenuecat
- stream
- typeorm
- typescript
Log in or sign up for Devpost to join the conversation.