Swipe-based dog discovery and rescue-org operations — bilingual, role-aware, real-time.
The challenge
Puerto Rico rescue organizations needed a shared system for managing dog listings and incoming applications. Adopters needed more than a static list — they needed discovery that matched lifestyle and preference. A single product had to serve all three sides without the role model collapsing.
How we built it
I structured the app around Expo Router file-based routing with strict role-based layouts for adopter, organization, and admin, wrapped in a coral, teal, and purple role-themed gradient system with Poppins typography. Firebase Auth, Firestore, and Cloud Functions power the backend. TanStack Query v5 handles server state, Zustand manages swipe and preference state client-side, and Reanimated v4 plus Gesture Handler v2 drive the swipe deck. A client-side scorer grades dog–adopter fit A–D to power the For-You feed, and i18next covers bilingual content with locale detection.
What shipped
Zoori gives rescue organizations a full operations dashboard for dogs, applications, and messaging, while adopters get swipe and For-You discovery tuned to their preferences. Real-time messaging, push notifications, transactional email, a RescueGroups.org sync, and admin moderation make the platform usable for both English- and Spanish-speaking communities in Puerto Rico.
Outcomes
- Built a three-sided platform — adopter, rescue organization, and admin — each with dedicated dashboards, workflows, moderation tools, and access controls backed by Firestore rules.
- Delivered gesture-driven swipe discovery plus an algorithmic For-You feed with A–D match scoring, a breed glossary with bookmark alerts, saved dogs, and swipe history.
- Added bilingual (en/es) support, real-time per-conversation messaging via Firestore listeners, 13 push-notification types, transactional email via Resend, and a RescueGroups.org listing sync.