A private, self-hostable health-research & tracking companion — built fully on Firebase / Google Cloud.
mom helps a patient and their caregiver turn scattered research (mainstream and holistic/alternative — YouTube videos, PDFs, notes) into a private, searchable knowledge base, then chat with it in plain language with citations. It also tracks medications, labs, daily wellness, meals, and doctor visits, helps run a disciplined N-of-1 experiment, and keeps a medication/appointment schedule with reminders.
It was built to help one family navigate Parkinson's disease, but it's a general template: clone it, point it at your own Firebase project, ingest your own sources, and run your own private instance.
This software is a private research, tracking, and organization tool. It is not a medical device and does not provide medical advice. It does not diagnose, prescribe, or replace a licensed clinician. Discuss every supplement, medication, diet, or therapy change with a qualified physician before acting on anything surfaced here.
- RAG knowledge base — ingest YouTube transcripts, PDFs, and notes into Firestore vector search; ask grounded questions and get cited answers with source-trust labels.
- Research digests — plain-language, cited summaries of a topic across your sources.
- Health records — medications/supplements, lab results, med files, and a profile/fact-sheet.
- Journaling — daily wellness scorecard, meals (with protein-vs-medication timing), events, and mood.
- Protocols / experiments — track regimens and N-of-1 experiments against your own metrics.
- Scheduler & reminders — medication timing, meals, therapies, and appointments via push notifications.
- Doctor-visit recorder — record, transcribe, and auto-summarize visits into structured notes.
- Accessibility-first — large type, high contrast, big tap targets, voice input — designed for elderly users.
- Family collaboration — invite family to learn the research, comment, and chat; the medical record stays caregiver-controlled.
- Wearable sync (optional) — pull Fitbit/Google Health metrics (resting HR, HRV, sleep) as objective N-of-1 signals.
- Brain games — offline, ad-free Sudoku / word / card games for cognitive engagement.
Flutter (Web + Android) client → Firebase (Auth, Firestore, Storage, Cloud Functions, FCM) → Vertex AI (embeddings + Gemini). The vector store is Firestore vector search (find_nearest); text chat, synthesis, embeddings, and audio transcription run through an LLMProvider interface (swappable by config), while image/vision extraction, rerank, and document parsing are Gemini/Google-specific in v1 (ADR-0011). Full detail:
- System Design — architecture, data model, RAG pipeline, security, accessibility.
- Implementation Plan — phased build plan.
- Architecture Decisions (ADRs) — why Firestore vectors, Gemini/Vertex, etc.
| Layer | Technology |
|---|---|
| Frontend | Flutter (Web + Android) · Riverpod · GoRouter · Freezed |
| Auth | Firebase Auth (email/password) |
| Data + vectors | Firestore (find_nearest) |
| Files | Cloud Storage |
| Compute | Cloud Functions (Python 3.13) |
| AI | Vertex AI — embeddings + Gemini; chat/synthesis/embeddings/audio behind an LLMProvider interface, vision/rerank/doc-parsing Gemini-specific in v1 (ADR-0011) |
| Notifications | Firebase Cloud Messaging |
| Wearable (optional) | Google Health API (OAuth 2.0) — Fitbit Charge 4 |
| Hosting | Firebase Hosting |
Prerequisites: Flutter (Dart 3.11+) · Firebase CLI · FlutterFire CLI · gcloud · Python 3.13 + uv · a GCP project with billing enabled.
# 1. Clone
git clone <your-fork-url> mom && cd mom
# 2. Create / pick a Firebase project, then point this repo at it
cp .firebaserc.example .firebaserc # edit: set your project id
cp .env.example .env # edit: set project + Vertex settings
# 3. Enable the Google Cloud APIs you'll use
gcloud services enable \
firestore.googleapis.com aiplatform.googleapis.com \
cloudfunctions.googleapis.com run.googleapis.com \
firebasestorage.googleapis.com cloudscheduler.googleapis.com
# 4. Generate Flutter Firebase config (writes the gitignored firebase_options.dart)
cd mom && flutterfire configure && cd ..
# 5. Deploy backend (rules, indexes, functions)
firebase deploy --only firestore:rules,firestore:indexes,storage,functions
# 6. Run the app
cd mom && flutter run -d chrome # web
# flutter run # Android device/emulator
# 7. (optional) Deploy the web build to Firebase Hosting
flutter build web && cd .. && firebase deploy --only hostingEnable Email/Password sign-in in Firebase Console → Authentication → Sign-in method, and create your users.
See CONTRIBUTING.md for the dev workflow and SECURITY.md for how secrets and private data are handled.
mom/ Flutter app (Web + Android)
functions/ Cloud Functions (Python 3.13) — ingestion, RAG, transcription
docs/ System design, implementation plan, ADRs
research/ (gitignored) your private source corpus — only README is committed
firestore.rules Firestore security rules
storage.rules Cloud Storage security rules
firestore.indexes.json includes the chunks.embedding vector index
*.example templates you copy to create your own private config
Your data lives in your own Firebase project — there is no shared backend. This repository is structured so private medical data is never committed: the personal research corpus (docs/research/*), any *.private.* files, real seed data, and per-project config (.firebaserc, firebase_options.dart, service-account keys, .env) are all gitignored. You populate your instance from the *.example templates. This is a private app and is not HIPAA-certified; secure your GCP project accordingly.
Contributions welcome — see CONTRIBUTING.md. Licensed under the MIT License.