How eng-muhamad-hasan/oasis-app works
This is an Expo Router mobile app whose README presents it as an authentication starter: users register or sign in, verify email, complete required username onboarding, then reach protected content; optional biometric locking gates access locally. The tree also contains a substantial hotel-discovery interface, from destination and date search to hotel details and booking navigation. The README documents Better Auth and server protections, while the sampled client auth service calls Supabase; this mismatch limits certainty about the live auth wiring. Unsampled route and hotel internals are represented only where documented or evident from paths.
Main entry points: auth-server.ts Auth server · auth-provider.tsx Session provider · sign-in.tsx Auth screens · api-client.ts API client
Components 24
App navigation
- Route layouts
src/app/_layout.tsx - Auth routes
src/app/(auth)/_layout.tsx - Main tabs
src/app/(tabs)/_layout.tsx - Protected dashboard
src/features/home/screens/dashboard.tsx
Identity and onboarding
- Auth screens
src/features/auth/screens/sign-in.tsx - Auth service
src/features/auth/service/auth-service.ts - Native identity
src/lib/auth/google-sign-in.ts - Session provider
src/features/auth/auth-provider.tsx - Profile onboarding
src/features/onboarding/screens/OnboardingScreen.tsx - App lock
src/features/biometrics/biometric-lock-provider.tsx - Google sign-in
src/lib/auth/google-sign-in.ts - Apple sign-in
src/lib/auth/apple-sign-in.ts
Hotel discovery
- Hotel search
src/screens/home/HomeScreen.tsx - Hotel details
src/screens/hotel-detail/HotelDetailScreen.tsx - Hotel catalog
src/data/hotels.ts - Booking tab
src/app/(tabs)/bookings.tsx
Server and integrations
- Onboarding endpoint
src/server/onboarding/onboarding-handler.ts - API client
src/lib/api/api-client.ts - Demo handlers
src/server/demo/demo-handler.ts - Auth server
src/server/auth/auth-server.ts - PostgreSQL database
src/server/db/index.ts - Email delivery
src/server/email/email-delivery.ts - Supabase auth
src/lib/supabase/client.ts
Other components
- App user
Connections 25
- App user → Route layouts: opens app
- Route layouts → Auth routes: routes signed-out
- Route layouts → Main tabs: routes signed-in
- Auth routes → Auth screens: presents auth
- Auth screens → Auth service: submits credentials
- Auth screens → Google sign-in: starts Google sign-in
- Auth screens → Apple sign-in: starts Apple sign-in
- Auth service → Supabase auth: calls auth API
- Session provider → Auth server: restores session
- Session provider → Profile onboarding: routes incomplete profile
- Profile onboarding → API client: submits profile
- API client → Onboarding endpoint: sends request
- Onboarding endpoint → Auth server: validates session
- Onboarding endpoint → PostgreSQL database: updates user
- Auth server → PostgreSQL database: uses auth storage
- Auth server → Email delivery: sends verification
- Session provider → App lock: applies optional lock
- Session provider → Protected dashboard: opens protected area
- Protected dashboard → API client: requests demo data
- API client → Demo handlers: sends request
- Demo handlers → Auth server: checks protected session
- Main tabs → Hotel search: opens search
- Hotel search → Hotel catalog: reads listings
- Hotel search → Hotel details: opens property
- Main tabs → Booking tab: opens bookings