CARP Gardener collects wearable activity and health data from third-party services and optionally transforms the payloads before publishing them. The repository contains the reusable framework plus a ready-to-run CARP-oriented service.
gardener-core(:core): framework for OAuth-based authorization, data collection, and transformer registration. See docs/core_readme.md for architecture and extension points.gardener-caws-implementation(:caws-implementation): Ktor service that wires the core to PostgreSQL, RabbitMQ, and CARP payload transformers. See docs/impl_readme.md for deployment details and docs/ktor-routing.md for HTTP endpoints.
- Fitbit (OAuth2)
- Garmin (OAuth1)
- Withings (OAuth2)
- Dexcom (OAuth2)
- JDK 21 (the Gradle wrapper configures toolchains automatically).
- Docker + Docker Compose if you want the bundled PostgreSQL/RabbitMQ stack.
- OAuth credentials for the vendors you plan to enable (fill them into
gardener-caws-implementation/.env).
Run the Gradle wrapper from the repository root:
./gradlew build # builds everything and runs tests
./gradlew :core:test # framework-only tests
./gradlew :caws-implementation:test
-
With Docker Compose (full stack)
- Copy the sample env file:
cp gardener-caws-implementation/_.local.env gardener-caws-implementation/.envand add your secrets. - Start the stack:
docker compose -f gardener-caws-implementation/docker/docker-compose.yml --env-file gardener-caws-implementation/.env up --build
This brings up PostgreSQL, RabbitMQ, and the service on port8444(RabbitMQ UI on15673).
- Copy the sample env file:
-
Locally with Gradle (reuse external Postgres/RabbitMQ)
Ensure the dependencies are reachable (the Compose stack above works). Keep the.envfile ingardener-caws-implementation/for overrides. Then run:
cd gardener-caws-implementation && profile=local ../gradlew :caws-implementation:run
Configuration is loaded fromconf/config-<profile>.jsonwith environment variables (or.env) overriding the defaults.
- docs/core_readme.md – core framework architecture and extension hooks.
- docs/impl_readme.md – deployment architecture and RabbitMQ consumer helper.
- docs/ktor-routing.md – HTTP endpoints exposed by the CARP implementation.
- docs/postgres-schema.sql – database schema used by the implementation.
MIT License. See LICENSE for details.
