Cross-platform mobile application (iOS & Android) for pet owners and professionals to book services, manage pets, chat in real-time, and access marketplace. Built with React Native for code reuse across platforms.
Email: owner@galipet.com
Password: Owner1234!
Email: vet@galipet.com
Password: Pro1234!
- Open app and select "Login"
- Enter owner email & password
- Allow location permissions
- Browse nearby professionals on map
- Click professional to view profile & services
- Select service, date, and time
- Complete payment with test card:
4242 4242 4242 4242 - View booking confirmation
- Chat with professional in real-time
- Leave review after service completion
- Open app and select "Login"
- Enter professional email & password
- View pending booking requests on dashboard
- Confirm or decline bookings
- Chat with pet owners
- Set availability schedule
- View earnings and completed bookings
- Receive push notifications for new requests
- Real-time chat with Socket.IO
- Location-based professional search
- Secure payment processing (Stripe test mode)
- Push notifications (Firebase)
- Booking lifecycle management
- Professional ratings & reviews
- Pet profile management
- Marketplace browsing & ordering
Card Number: 4242 4242 4242 4242
Expiry: Any future date (e.g., 12/25)
CVC: Any 3 digits (e.g., 123)
| Technology | Version | Purpose |
|---|---|---|
| React Native | 0.73.x | Cross-platform mobile framework |
| Expo | 52.x | Managed React Native platform |
| Expo Router | 3.x | File-based routing (like Next.js) |
| TypeScript | 5.x | Type-safe code |
| Zustand | 4.x | Lightweight state management |
| TanStack Query | 5.x | Server state & caching |
| Socket.IO | 4.x | Real-time chat & notifications |
| NativeWind | 4.x | Tailwind CSS for React Native |
| Stripe RN SDK | Latest | Payment processing |
| Firebase Admin SDK | Latest | Push notifications (FCM) |
| Expo Location | Latest | GPS & geolocation |
| React Native Maps | Latest | Map display & location search |
- React Native: Write once, deploy to iOS & Android (code reuse)
- Expo: Managed platform eliminates native build complexity
- Expo Router: File-based routing simplifies navigation structure
- TypeScript: Catch errors before runtime
- Zustand: Minimal boilerplate for global state (auth, UI)
- TanStack Query: Automatic caching & background refetching
- Socket.IO: Real-time bidirectional communication for chat
- NativeWind: Consistent styling with Tailwind utilities
- Stripe RN SDK: Secure payment processing
- Firebase: Push notifications for bookings & messages
- Expo Location & Maps: Location-based service discovery
- User opens app → Expo loads JavaScript bundle
- User logs in → Credentials sent to backend
- JWT token received → Stored in secure storage (Zustand + MMKV)
- Home screen loads → TanStack Query fetches nearby professionals
- User searches → Map displays professionals with filters
- User selects professional → Views profile, services, availability
- User books service → Stripe payment intent created
- Payment processed → Booking confirmed, notification sent
- Real-time chat → Socket.IO connects to chat server
- Service day arrives → Firebase push notification reminder (24h, 1h before)
- Service completed → User leaves review & rating
- Professional logs in → Dashboard shows pending bookings
- Booking request arrives → Real-time notification via Socket.IO
- Professional confirms → Booking status updated, owner notified
- Chat with owner → Socket.IO real-time messaging
- Service completed → Mark as complete, receive payment
- View earnings → Dashboard shows monthly revenue
| Screen | Purpose |
|---|---|
| Auth | Login, register, OTP verification |
| Home (Owner) | Nearby professionals, search, filters |
| Professional Detail | Profile, services, availability, reviews |
| Booking | Calendar, time slots, payment |
| Chat | Real-time messaging with professionals |
| Pets | Pet profile management |
| Marketplace | Product browsing, cart, checkout |
| Orders | Order history, tracking |
| Dashboard (Pro) | Pending bookings, earnings, schedule |
| Notifications | In-app notification center |
- Chat: Socket.IO bidirectional messaging
- Notifications: Firebase FCM push notifications
- Typing Indicators: Real-time "user is typing" status
- Online Status: See if professional is available
- Live Updates: Booking status changes in real-time
- User selects service & date
- Stripe payment intent created on backend
- Stripe RN SDK opens payment sheet
- User enters card details (secure)
- Payment processed
- Backend webhook confirms payment
- Booking created & notifications sent
cd galipet-mobile
npm install
npx expo start # Start dev server
npx expo start --ios # Run on iOS simulator
npx expo start --android # Run on Android emulator
npm run build # Production build- ✅ Cross-platform (iOS & Android)
- ✅ Real-time chat with Socket.IO
- ✅ Location-based professional search
- ✅ Secure payment processing (Stripe)
- ✅ Push notifications (Firebase)
- ✅ Offline support (cached data)
- ✅ Native performance with Expo
Built with React Native + Expo for iOS & Android 🚀