A web app that transforms your Strava data into visual progress tracking. Set annual goals, watch your cumulative progress climb against your target "desire line."
- Goal Visualization - Set distance targets, track progress in real-time
- Strava Integration - Automatic activity import via webhooks
- Multi-Sport Support - Cycling, running, yoga, and more
- Modern Stack - React frontend, Go/Python backend, Google Cloud Run
# Complete local setup
./scripts/ops/setup/setup-local.sh
# Or manually:
uv sync
cd packages/dispatcher && go mod download
cp .env.example .envuv- Python package manager- Go 1.25+
- Pants - Build system
- just - Task runner
- Docker, Terraform, Google Cloud SDK
We use just as our task runner. Commands default to fast native tools (uv, go, npm) but can optionally use Pants.
just test # Run all tests (native tools)
just lint # Lint all code (native tools)
just web-dev # Start web dev server
just --list # List all available commands
# Use Pants for specific commands
just py-test --pants
just go-test --pantsFor full environment orchestration (Docker):
just start # Backend pipeline with PubSub emulator
just start-frontend # Frontend + API gateway + Postgrespackages/
├── web/ # React frontend
├── apigateway/ # Go REST API
├── dispatcher/ # Go webhook receiver
└── stravapipe/ # Python event processors (bq-inserter, postgres-writer)
schemas/
├── proto/ # Cross-language type definitions
├── database/ # PostgreSQL migrations
└── bigquery/ # BigQuery table schemas
Data Flow: Strava webhook → dispatcher → PubSub → stravapipe → PostgreSQL/BigQuery → apigateway → web
- Bootstrap Guide - Complete environment setup
- Strava Webhook - OAuth2 + webhook configuration (required!)
- Deployment Guide - Cloud deployment
- All Guides
This project is in active development. Contributions welcome!