Codename. The final project name is an open decision (ADR-0008).
An open-source, self-hostable, cross-platform sports platform (iOS, Android, Web) with a feature set comparable to established sports-tracking platforms and no paywall on core functionality.
Status: pre-alpha. The code of MVP-1 (account, sync, backend, web, self-hosting) and of the first MVP-2 slice (the analysis of an activity, the GPX import, the heart-rate channel, the personal records) is in place: what is missing is the evidence on real devices — the device matrix is empty, and the exit criteria of MVP-0 and MVP-1 are not met until it is filled (roadmap).
Your data is exportable · core features are never paywalled · tracking works offline · data quality is explicit · metrics are versioned and reproducible · self-hosting is a real mode, not an afterthought · privacy by design · a modular monolith, not premature microservices. Full list in docs/product/vision.md.
| Path | Contents |
|---|---|
apps/android |
Jetpack Compose app, native tracking adapter |
apps/ios |
SwiftUI app, native tracking adapter (Xcode project generated by XcodeGen) |
apps/web |
React + TypeScript web app (includes the admin area) |
shared/ |
Kotlin Multiplatform: domain, tracking (the store and the replay), metrics, analysis (the splits, the elevation, the series, the best efforts), sensors, sync |
backend/ |
Ktor modular monolith, Flyway migrations |
infrastructure/ |
Docker Compose stack for local dev and self-hosting |
tests/gps-fixtures/ |
Reference GPS traces with expected results |
docs/ |
Product, architecture, ADRs, design docs, metrics, privacy, runbooks — start at docs/README.md |
Prerequisites: JDK 21, Node 22+, Docker. Android Studio for Android; macOS + Xcode 16+ and XcodeGen for iOS.
# Shared logic + backend
./gradlew :shared:domain:jvmTest :shared:metrics:jvmTest :backend:test
# Local stack (PostGIS, S3-compatible storage, backend)
cp infrastructure/compose/.env.example infrastructure/compose/.env
docker compose -f infrastructure/compose/docker-compose.yml --env-file infrastructure/compose/.env up -d --build
curl localhost:8080/health
# Web
cd apps/web && npm ci && npm run devRead CONTRIBUTING.md. Significant decisions go through an ADR; non-trivial features start with a design doc (docs/design).
AGPL-3.0-or-later. Rationale in ADR-0002.