Skip to content

Mobile Appointments and Discovery

Ankit Upadhyay edited this page Jul 9, 2026 · 1 revision

Mobile: Appointments and Discovery

Booking appointments and finding clinics — the pet owner's core flow. Backend counterpart: Backend: Appointments and Scheduling. Part of Mobile Overview.

Feature layout

src/features/appointments/ owns two slices:

  • appointmentsSlice.ts (appointments) — the owner's appointments.
  • businessesSlice.ts (businesses) — discovered businesses, employees, availability, and services.

Plus services/appointmentsService.ts, selectors.ts, types.ts (Invoice, PaymentIntentInfo), and mocks.ts.

Screens

AppointmentsScreen, MyAppointmentsScreen, MyAppointmentsEmptyScreen, BrowseBusinessesScreen, BusinessDetailsScreen, BusinessesListScreen, BookingFormScreen, ViewAppointmentScreen (+ .helpers.ts), EditAppointmentScreen, ReviewScreen. Wired through AppointmentStackNavigator.tsx; params (including MerckManuals, AppointmentForm, FormSigning, OrganisationDocument) in navigation/types.ts.

Discovery / map search

  • components/MapDiscovery/MapDiscoveryView.tsx, ClinicBottomSheet.tsx, ClinicMapPin.tsx, ClusterMapPin.tsx.
  • Backed by src/shared/services/maps/googlePlaces.ts, src/shared/services/LocationService.ts, and src/shared/stores/locationStore.ts.
  • Business cards: components/BusinessCard/, VetBusinessCard/. (See src/features/appointments/MAP_DISCOVERY_README.md.)

Booking UI

A rich set of booking components: AppointmentFormContent/, BookingSummaryCard/, CalendarMonthStrip/, CalendarRow/, TimeSlotPills/, SpecialtyAccordion/, PackageAccordion/, SummaryCards/, CancelAppointmentBottomSheet/, InfoBottomSheet/. Payment on booking uses Stripe (@stripe/stripe-react-native); the booking flow can attach forms and open the Merck manuals.

sequenceDiagram
    participant U as Pet owner (mobile)
    participant API as Backend
    participant S as Stripe (clinic's connected account)
    U->>API: create appointment (BookingFormScreen)
    API-->>U: appointment + PaymentIntent
    U->>S: confirm payment (@stripe/stripe-react-native)
    S-->>API: webhook (payment succeeded)
    API-->>U: booking confirmed
Loading

Related

Product & Domain
Architecture
Applications
Design & Accessibility
Engineering Handbook
Decisions (ADRs)
Design Docs & Plans
Roadmap
Operations
Meta

Canonical code & docs: main repo · Auto-generated companion: DeepWiki

Clone this wiki locally