Measure your rate of progress.
Tracking productivity shouldn't be this hard. Existing tools shift the burden of measurement onto the individual — the result is fragmented data, inconsistent tracking, and no reliable way to evaluate performance over time.
- Fragmented tooling — Meaningful work output is distributed across version control, project management, communication platforms, and calendars with no unified view.
- High-friction tracking — Traditional time tracking demands constant manual input. Adherence drops off within days.
- Data without insight — Most tools surface raw activity logs, not the trajectory analysis needed to identify trends over weeks and months.
Baseline integrates with your existing development and project management tools, captures activity passively, and derives quantitative metrics and trend analysis — with minimal configuration required.
- Connect your tools — Link GitHub, your calendar, and your project boards. Baseline pulls your activity automatically — no timers, no manual entry, no behavior changes.
- See your metrics — Baseline calculates the metrics that matter: output, cycle time, focus hours, and consistency scores.
- Track your trends — See how your productivity changes week over week, month over month. Spot patterns, identify what's working, and understand where your time goes.
- Productivity dashboard — consistency score, focus hours, cycle time, and active days with trend comparisons across 7d/30d/90d windows
- GitHub integration — OAuth connect, automatic ingestion of commits, PRs, and reviews
- Activity heatmap & patterns — contribution grid, day-of-week and hour-of-day distributions, drill-down into individual days
- 12 computed metrics — output, velocity, and calibration categories derived from your real activity
- Self-hostable — single
docker compose upwith PostgreSQL and Redis included
Copy .env.example to .env at the project root and fill in your credentials:
| Variable | Required | Description |
|---|---|---|
AUTH_SECRET |
Yes | Random string for signing auth tokens |
GITHUB_CLIENT_ID |
For OAuth | GitHub OAuth app client ID |
GITHUB_CLIENT_SECRET |
For OAuth | GitHub OAuth app client secret |
GITHUB_USERNAME |
For marketing | GitHub username for the landing page heatmap |
GITHUB_TOKEN |
No | GitHub PAT for higher API rate limits (60/hr without, 5000/hr with) |
RESEND_API_KEY |
No | Enables the contact form (resend.com) |
CONTACT_EMAIL |
No | Recipient for contact form submissions |
docker compose upThat's it. The database is created automatically on first boot. Three services start:
| Service | URL | Description |
|---|---|---|
| Marketing | http://localhost:3000 | Public landing page |
| API | http://localhost:3001 | Backend server |
| Dashboard | http://localhost:3002 | Product dashboard |
Sign up at http://localhost:3002/sign-up, then connect GitHub from the Sources page. Database, Redis, and inter-service URLs are all handled automatically.
Requires Node.js 20+, pnpm 10+, and a local PostgreSQL instance.
git clone https://github.com/Andrew5194/baseline.git
cd baseline
pnpm install
# Configure each app
cat > apps/api/.env.local << 'EOF'
DATABASE_URL=postgresql://user:pass@localhost:5432/baseline
AUTH_SECRET=your-random-secret
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET=your-github-client-secret
API_URL=http://localhost:3001
WEB_URL=http://localhost:3002
EOF
cat > apps/web/.env.local << 'EOF'
NEXT_PUBLIC_API_URL=http://localhost:3001
EOF
cat > apps/marketing/.env.local << 'EOF'
NEXT_PUBLIC_GITHUB_USERNAME=your-github-username
GITHUB_TOKEN=your-github-pat
RESEND_API_KEY=your-resend-api-key
CONTACT_EMAIL=you@example.com
EOF
# Create tables
pnpm --filter @baseline/db migrate
# Start all apps
pnpm devApps start on the same ports: marketing (3000), API (3001), dashboard (3002).
apps/
marketing/ Public website (landing page, contact, GitHub heatmap)
web/ Product dashboard (metrics, heatmap, activity feed)
api/ HTTP API server
packages/
db/ Drizzle schema, migrations, and typed client
events/ Canonical event types
metrics/ 12 derived metric functions (pure, no DB)
api-client/ OpenAPI 3.1 spec and generated types
ui/ Shared components
integrations/
github/ GitHub OAuth, GraphQL client, event normalizer
docker-compose.yml Self-hosting configuration
turbo.json Turborepo pipeline config
pnpm-workspace.yaml Workspace definitions
Contributions are welcome. Before submitting, please read CONTRIBUTING.md and sign the CLA.
Baseline is open source under the GNU Affero General Public License v3.0 (AGPL-3.0).
- You may self-host, modify, and redistribute Baseline freely.
- If you run a modified version as a network-accessible service, you must make your modified source code available to users of that service (AGPL's network copyleft clause).
- A commercial license is available for organizations that cannot comply with AGPL's source-disclosure requirements.
For commercial licensing inquiries, get in touch via the Baseline contact page.