Skip to content

solargate/grom

Repository files navigation

Project Grom

⚠️ Warning — early development

Grom is under active development and is closer to an MVP than production software. It is not ready for production use.

Configuration formats, APIs, storage layouts, and other interfaces may and will change without a stable migration path. Expect bugs. Use at your own risk.

Self-hosted workout tracker with an optional ActivityPub federation layer. Record or import workouts, manage equipment, follow other athletes (local or federated), and browse a social feed — all on infrastructure you control.

The server is a single Go binary; the Flutter client ships as an embedded web UI and as an Android app.

Features

  • Workouts — create and edit activities with stats, notes, media, and map previews
  • GPS tracks — import GPX and FIT; live recording on Android
  • Equipment — track bikes, shoes, and other gear linked to workouts
  • Social feed — follow users and see their workouts in one timeline
  • Federation — optional ActivityPub so instances can follow each other across the network
  • Strava import — bulk-import a Strava data export ZIP
  • Clients — same Flutter UI in the browser (served by the server) and as an Android APK
  • Locales — English, Russian, and German in the Flutter UI

Workout list Live recording Equipment

Quick start

make grom    # swagger + Flutter web + Go binary → cmd/grom/grom
cd cmd/grom && go run . --config config-examples/config.dev.notls.yaml

Set auth.jwt_secret in your config (required). Example profiles: cmd/grom/config-examples/.

Then open http://localhost:8080/ for the web UI, or http://localhost:8080/api/docs/ for Swagger API docs (default dev port).

Documentation

License

GPL-3.0

Donations

If you’d like to support development, see DONATIONS.md.