MedMap is a cross-platform mobile health companion built with Expo and React Native. It helps users track vitals, maintain medical records, visualize medication-to-condition relationships, and query their history through an in-app assistant.
- Unified patient profile with emergency context
- Doctor visit and prescription capture
- Daily medication checklist and adherence logging
- Vital tracking (heart rate, calories, steps, weight)
- Graph-based MedMap visualization for conditions and medications
- In-app health assistant grounded in the user record
app/contains route-based screens using Expo Routerapp/(auth)/handles authentication and account flowsapp/onboarding.tsxcollects required patient and emergency dataapp/(tabs)/provides the main product surfaces: Home, Records, Graph, Chat, Profile
lib/medical-records.tsimplements profile, contacts, visits, medications, checklist, and search operationslib/vitals.tsmanages vital writes and latest/history readslib/queries.tsbuilds contextual records for the assistantlib/medmap/transforms records into graph payloads used by the visualizationlib/emergency-data-context.tsxprovides shared profile and contact state across screens
- Clerk handles authentication and session management
- Supabase provides persistent storage accessed through
lib/supabase.ts - OpenRouter/OpenAI client in
lib/medbot.tspowers the MedBot chat response pipeline
- User signs in with Clerk.
- Onboarding enforces baseline profile and emergency contact completeness.
- Tabs expose operational modules:
- Home: quick vitals and medication checklist interactions
- Records: doctor entries and prescription capture
- Graph: interactive condition-medication network
- Chat: assistant replies grounded in profile, visit, and medication history
- Profile: emergency details management and sign-out
- All persistent actions route through typed access functions in
lib/.
Core entities used by the app:
profilesemergency_contactsdoctor_visitsmedicationsmedication_adherencevitals
The records module composes these entities to produce search views, checklist state, and graph payload inputs.
- Expo SDK 54
- React Native 0.81 / React 19
- Expo Router
- Clerk (
@clerk/clerk-expo) - Supabase (
@supabase/supabase-js) - NativeWind + Tailwind
- React Native Reusables + RN Primitives
- OpenAI SDK against OpenRouter API
Create .env in the project root.
Required:
EXPO_PUBLIC_CLERK_PUBLISHABLE_KEYEXPO_PUBLIC_SUPABASE_URLEXPO_PUBLIC_SUPABASE_KEY
Required for Chat assistant:
EXPO_PUBLIC_OPENROUTER_API_KEY
Install dependencies:
npm installRun development server:
npm run devPlatform targets:
npm run ios
npm run android
npm run web- Keep environment variables injected per environment.
- Restrict API keys and rotate if exposed.
- Validate Supabase schema compatibility before release.
- Confirm mobile build settings in
app.jsonbefore submission.
- End-to-end auth and onboarding flow
- Real-time medication and doctor record updates
- Visual MedMap exploration with filters and detail drawer
- Context-aware chat assistant for medication and visit history
- Cross-platform deployment path (iOS, Android, Web)





