Chronic Care Management App — a patient-facing mobile app that lets a single user track, monitor, and manage multiple chronic conditions (Diabetes, Hypertension, Cholesterol, Asthma, Smoking Cessation) from a single home dashboard, with HealthKit / Health Connect integration and a FastAPI sync backend.
This repo is sibling to uniconnex/, infraforge-enterprise/, and
mobile-apps/ under AmericanGroupLLC/. It is a portfolio Tier-2
candidate (see portfolio-board/STATUS.md); no LOIs, no validation
evidence yet — promotion to Tier-1 is an explicit, user-owned decision.
chronic-care/
├── mobile/ # Flutter app (iOS + Android single codebase)
├── backend/ # FastAPI + Postgres sync service
└── docs/ # architecture, design system, disease modules, ADRs
cd mobile
flutter pub get
dart run build_runner build --delete-conflicting-outputs
flutter run -d ios # iOS Simulator
flutter run -d android # Android EmulatorThe app opens to a seeded single-user profile (Hi, John 👋) with 5
active conditions populated by lib/data/db/seed.dart. No auth in the
MVP — see docs/ROADMAP.md for the auth follow-on.
cd backend
docker compose up -d postgres
poetry install
alembic upgrade head
uvicorn chronic_care.main:app --reload --port 8211Or the all-in-one:
docker compose up --build
curl -fsS http://localhost:8211/health# from chronic-care/
docker compose up --build -d
cd mobile
BACKEND_URL=http://localhost:8211 flutter run -d ios
# Android emulator points at the host loopback as 10.0.2.2:
BACKEND_URL=http://10.0.2.2:8211 flutter run -d androidWhen BACKEND_URL is set, the mobile app's SyncService mirrors every
local Drift write to the FastAPI service. When unset, the app runs in
local-only mode.
| Condition | Primary metric | Goal |
|---|---|---|
| Diabetes | A1C | < 7.0 % |
| Hypertension | Systolic / Diastolic BP | < 130 / 80 mmHg |
| Cholesterol | LDL | < 100 mg/dL |
| Asthma | Asthma Control Score | > 19 (out of 25) |
| Smoking Cessation | Smoke-free days | 30 days |
Each module has Overview / Track / Progress / Plan tabs powered by the
generic ConditionModule widget + a per-disease config registry — see
docs/DISEASE-MODULES.md and
docs/ADR/0004-generic-condition-module.md.
- Mobile: Flutter 3.24 / Dart 3.5, Riverpod 2 state, go_router 14
routing, Drift 2 SQLite persistence, fl_chart for the chart screens,
healthpackage as the single HealthKit + Health Connect bridge. - Backend: FastAPI + SQLAlchemy 2 async + Alembic + Postgres 16.
Identical layout to
infraforge-enterprise/services/nebulacore-engine(Dockerfile, pyproject, alembic.ini, core/{config,logging,middleware, security,telemetry}). Tests reuse the StaticPool SQLite fix landed inuniconnex/services/hypervisor-fed/. - Sync: last-write-wins on
recorded_at. No CRDT; the MVP is single-user, single-device-typical.
Full architectural deep-dive lives in docs/ARCHITECTURE.md.
See docs/ROADMAP.md. This MVP scaffold deliberately ships without:
- Auth / multi-user / org tenancy
- Watch / Wear OS / wearable companions
- Real ML insights (the Insights screen uses algorithmic trend
detection in
mobile/lib/features/insights/trend_calculator.dart) - Clinician / care-team portal
- SQLCipher, audit logs, HIPAA / SOC 2 hardening beyond platform defaults
- App-store packaging, signing, privacy nutrition labels
- Any cloud deploy, push, or PR — local-machine only
Each of those is a separate, named follow-on plan, not a TODO comment.
- Listed under Tier-2 candidates in
portfolio-board/STATUS.md. - Detailed entry in
portfolio-board/PORTFOLIO.md§4.1. - Wave 6 of the org E2E plan at
~/.llms/plans/american_group_llc_e2e_development.plan.md.
Proprietary. © 2026 American Group LLC.