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. 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 drives the swipe gesture layer. 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-based and browse-based discovery tuned to their preferences. Bilingual support, push notifications, and transactional email 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, and access controls backed by Firestore rules.
- Delivered swipe-based dog discovery alongside a traditional browse-and-filter flow, with match scoring, saved dogs, and swipe history.
- Added bilingual support (English and Spanish), in-app messaging per conversation, push notifications, and transactional email via Resend.