# EvolioHealth specifications EvolioHealth is a private, self-hosted platform for recording, synchronizing, and visualizing personal health, activity, body-measurement, and progress-photo data. The product has two deliverables: - **EvolioHealth Server**: Go business API, bundled Flutter Web application, internal PocketBase persistence, encrypted private media, and a replaceable SQLite reference database. - **EvolioHealth Companion**: Android Flutter application with offline storage, Health Connect integration, and direct Bluetooth Low Energy support for the Xiaomi Mi Body Composition Scale 2. This package is the initial product and architecture source of truth for implementation by Codex. Start with [the documentation index](docs/index.md). ## Fixed principles - Privacy and strict user isolation are product requirements. - PocketBase is never directly exposed. - Deployment uses one `compose.yaml`; `APP_ENV=dev|prod` selects runtime behavior. - Runtime containers are non-root, capability-free, and compatible with common Linux NAS/container hosts. - Data ownership, export, correction, and deletion are first-class features. - The initial mobile target is Android only. ## Status The repository foundation is now present. It contains minimal Go, Flutter Web, and Flutter Android entry points, container builds, a hardened Compose topology, and Gitea Actions workflows. Business functionality remains staged according to [the development plan](docs/development-plan.md). ## Repository layout ```text server/ Go API and bundled Flutter Web server web/ Flutter Web application companion/ Flutter Android Companion deploy/pocketbase/ Private PocketBase container .gitea/workflows/ Checks, container publishing, and development APK compose.yaml Single supported deployment definition docs/ Authoritative specifications and decisions ``` ## Development deployment Copy `.env.example` to `.env`, set `APP_URL`, and start the stack with the standard Docker Compose interface. Images default to: ```text git.zaynet.fr/tony/evoliohealth-server:dev git.zaynet.fr/tony/evoliohealth-pocketbase:dev ``` PocketBase has no host port and is connected only to the internal backend network. The public application listens on host port `8080` for local development and is the only service a reverse proxy may target. ## Automated builds Gitea Actions requires an online runner carrying the `ubuntu-latest` label. Container publication uses the repository secret `REGISTRY_TOKEN`, containing a dedicated Gitea personal access token limited to `write:package`. A push to `main` publishes multi-architecture development images for `linux/amd64` and `linux/arm64`. The Android workflow produces a debug APK retained as a short-lived workflow artifact; release signing is not configured yet.