// health · self-hosted

Vitalix

Own your health data. An Android app that reads Health Connect on-device and forwards it as JSON to a server you control. No Google Sheets, no CSV, no third-party path.

What it is

Vitalix is two parts: an Android app that reads your Health Connect records on-device and forwards only the metrics you enable, and a self-hosted receiver (Node/Express + Postgres) that ingests, stores, and charts them. The data path stops at your server. Nothing routes through a spreadsheet, a CSV export, or a vendor cloud.

Features

what it does
01

On-device export

Reads Health Connect locally and sends only the metrics you pick. Around 30 are supported.

02

Your Postgres

The receiver stores per-day rows in a Postgres database you own, with schema migrations built in.

03

Background auto-sync

WorkManager sync, gated so it only runs once the OS actually permits background execution.

04

Bearer-token auth

Server URL and token stored in EncryptedSharedPreferences; ingest is authenticated per request.

05

Private dashboard

Accounts with invite codes, password reset, and an admin area, all served from your host.

06

Backfill history

Choose a date range or backfill your existing history in one pass, not just new data.

How it works

data flow
01

Read

The Android app reads Health Connect on-device, no cloud in between.

02

Forward

It POSTs JSON to your receiver at /api/health with a bearer token.

03

Store

The receiver writes to your Postgres and charts it on a private dashboard.

Stack

built with
Android (Kotlin)Health ConnectWorkManagerNode / Express Postgresnode-pg-migrateEJSDocker

FAQ

common questions
What is Vitalix?

A privacy-first, self-hosted health tool. An Android app reads your Health Connect records on-device and forwards them as JSON to a receiver you control, which stores the data in your own Postgres and charts it on a private dashboard.

Where is my health data stored?

In your own Postgres database on your own server. There is no Google Sheets, no CSV, and no third-party data path.

Which health metrics can it export?

Around 30 metrics from Android Health Connect. You pick exactly which ones to send, and can choose a date range or backfill history.

How does the app send data to my server?

It POSTs JSON to your receiver at /api/health with an optional bearer token. The server URL and token are stored in Android EncryptedSharedPreferences.

Does it sync automatically?

Yes. Background auto-sync runs via WorkManager, gated so it only turns on once the OS will actually allow background execution, including OEM allow-lists on aggressive vendors like Samsung.