Android development APK / apk (push) Failing after 30s
Checks / go (push) Failing after 30s
Checks / flutter (push) Failing after 30s
Checks / compose (push) Failing after 30s
Container images / publish (., deploy/pocketbase/Dockerfile, evoliohealth-pocketbase) (push) Failing after 30s
Container images / publish (., server/Dockerfile, evoliohealth-server) (push) Failing after 30s
62 lines
2.8 KiB
Markdown
62 lines
2.8 KiB
Markdown
# 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.
|