Breast health awareness companion — Expo/React Native app for education, self-check habits, wellness resources, appointment prep, and an AI educational assistant (Ghana/WHO-focused content).
- System Design
- Features
- Technology Stack
- Getting Started
- Configuration
- Deployment
- Project Structure
- License
A mobile-first Expo app with React Navigation tabs, local context providers for app state, and cloud sync via Supabase. Gemini powers an educational AI overlay — informational only, not diagnostic.
flowchart TB
App[Expo React Native App]
Nav[React Navigation]
Context[Context Providers]
Supabase[(Supabase Auth + Postgres)]
Gemini[Google Gemini API]
Notif[expo-notifications]
App --> Nav
App --> Context
Context --> Supabase
App --> Gemini
App --> Notif
| Layer | Role |
|---|---|
| Screens | Home, Learn, Tools, Support, Settings, Auth flows |
| Context | Auth, progress, journal, wellness, planner state |
| Services | Supabase repos, Gemini chat, notification scheduling |
| supabase/schema.sql | Postgres tables with Row Level Security |
Disclaimer: This app provides educational information only. It does not diagnose or replace professional medical advice.
- Auth: sign up, sign in, forgot password (Supabase)
- Learning modules, paths, daily facts, quizzes, myth/fact cards
- Self-exam steps and monthly self-check planner with reminders
- Symptom journal and risk assessment quiz
- Appointment prep checklist
- Community insights and wellness resources
- AI assistant overlay (Gemini — educational only)
- Progress synced to Supabase (modules, quizzes, bookmarks, self-check logs)
- PDF export support (expo-print)
| Component | Technology |
|---|---|
| Mobile | Expo SDK 54, React Native 0.81, React 19, TypeScript |
| Navigation | React Navigation (stack + bottom tabs) |
| Backend | Supabase (auth + Postgres) |
| AI | Google Gemini API |
| Storage | AsyncStorage (local cache) |
| Notifications | expo-notifications |
- Node.js 18+
- Expo CLI (
npx expo) - Supabase project (run
supabase/schema.sql)
npm install
npx expo start
# Expo Go / dev client
npm run android # Native Android
npm run ios # Native iOS
npm run web # Web previewSet via app.json extra or environment variables:
| Variable | Purpose |
|---|---|
EXPO_PUBLIC_SUPABASE_URL |
Supabase project URL |
EXPO_PUBLIC_SUPABASE_ANON_KEY |
Supabase anon key |
EXPO_PUBLIC_GEMINI_API_KEY |
Gemini API key |
EXPO_PUBLIC_GEMINI_MODEL |
Optional; default gemini-1.5-flash |
Move API keys to environment variables for production builds — avoid committing secrets in
app.json.
| Target | Notes |
|---|---|
| EAS Build | Profiles in eas.json: development, preview, production |
| App stores | Bundle ID: com.richieroidev.BreastCancerAwarenessApp |
npx eas build --platform android
npx eas build --platform iosBreastCancerCompanionApp/
├── App.tsx / index.ts
├── app.json / eas.json
├── src/
│ ├── screens/
│ ├── components/
│ ├── context/
│ ├── services/
│ └── data/
└── supabase/schema.sql
See repository for license terms.