Fall Guardian is a multi-platform fall detection and alert system. It separates fall detection, phone-side alert coordination, caregiver notification, and API persistence into focused projects inside one monorepo.
watch detects possible fall
-> assisted mobile app starts a cancellable countdown
-> uncancelled alert is submitted to the backend API
-> backend stores the alert and notifies linked caregiver devices
-> caregiver app shows the active alert and history
-> caregiver can acknowledge the alert
Cancelled alerts are still part of the backend history so caregivers can see that an assisted user stopped the escalation.
fall_guardian_monorepo/
├── apps/
│ ├── assisted_mobile/ Flutter app for the assisted person
│ ├── caregiver_mobile/ Flutter app for caregivers
│ ├── wear_os/ native Wear OS watch app
│ └── watchos/ native Apple Watch app
├── backend/
│ └── api/ Symfony/API Platform backend
├── packages/ reserved for shared contracts or generated assets
├── docs/ workspace-level documentation
└── scripts/ workspace automation
Each project keeps its own build system, README, and agent instructions. The root Makefile only orchestrates common checks.
backend/api: device identity, invite linking, fall-alert persistence, push dispatch, alert history, acknowledgement, cancellation, rate limiting, and API documentation.apps/assisted_mobile: phone app used by the assisted person. It receives watch events, runs the countdown, manages contacts, submits alerts, and lets the user cancel an alert before escalation.apps/caregiver_mobile: phone app used by caregivers. It links to one or more assisted persons, registers for push notifications, displays active alerts, and shows alert history.apps/wear_os: native Android watch app for Wear OS sensor-based fall detection and handoff to the assisted Android phone.apps/watchos: native watchOS app for Apple Watch sensor-based fall detection and handoff to the assisted iPhone.
- Flutter SDK for the two mobile apps.
- Android Studio, Android SDK, and JDK 17 for Android/Wear OS builds.
- Xcode for iOS/watchOS builds.
- Docker Compose or Podman Compose for the backend.
- GitHub CLI if you need to create or inspect pull requests locally.
The backend Makefile chooses podman compose when Podman is installed, and
falls back to docker compose otherwise.
Show available root commands:
make helpRun all deterministic checks:
make qualityRun checks for one project:
make quality-api
make quality-assisted
make quality-caregiver
make quality-wear-os
make quality-watchosCheck repository state:
make status- Start from
mainand pull the latest changes. - Create a short-lived branch for the change.
- Keep changes in the project that owns the behavior.
- For cross-project contract changes, update the backend and affected apps in the same branch so the feature remains testable end to end.
- Run the project-level quality command before pushing.
- Open a PR and wait for CI to pass before merging.
- Keep automated line coverage at or above 90% when practical.
- Prefer useful tests that verify behavior, contracts, edge cases, and regressions over tests that only execute lines.
- Do not commit secrets, tokens, certificates, signing files, generated native Firebase files, or local machine configuration.
- Use deterministic tools first: formatters, linters, static analysis, tests, builds, dependency scanners, security scanners, and compiler checks.
- Use agent hooks for fast local safety checks.
- Use written guidance and skills for judgment-heavy architecture and review.
Default local backend documentation is available at:
http://localhost:8002/docs
Default local API base path:
http://localhost:8002/api/v1
When testing on a wired Android device, the mobile Makefiles can reverse
localhost:8002 through ADB with their run-android-wired targets.
Read the project README closest to the code you are changing:
backend/api/README.mdapps/assisted_mobile/README.mdapps/caregiver_mobile/README.mdapps/wear_os/README.mdapps/watchos/README.md