Measure your rate of progress.
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.
All configuration lives in a single .env file at the project root. Copy the .env.example to .env:
cp .env.example .envThen, fill in the following environment variables:
Note: Create an OAuth app at https://github.com/settings/developers to generate
GITHUB_CLIENT_IDandGITHUB_CLIENT_SECRETand set the callback URL accordingly if you are deploying Baseline locally or remotely:<your-url>/v1/integrations/github/callback
# === Required ===
AUTH_SECRET= # signing key for login sessions — generate: openssl rand -base64 32
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
# === Optional ===
GITHUB_USERNAME= # username for the marketing landing-page heatmap
GITHUB_TOKEN= # PAT for higher GitHub API limits (5000/hr vs 60/hr)
RESEND_API_KEY= # enables the contact form (resend.com)
CONTACT_EMAIL= # contact-form recipient
WEB_URL= # auto-detected; set only to pin a fixed public originEverything else is configured automatically. Advanced overrides (API_INTERNAL_URL, NEXT_PUBLIC_API_URL for split-origin deployments) are documented in .env.example.
If running on a local environment, execute the following:
make local
If running on a remote environment (such as a Cloud Developer Environment), execute the following:
make remote
This builds and starts the Docker containers. The database is created automatically on first boot. Follow logs with make logs and stop with make down. Two URLs are exposed:
| Service | URL | Description |
|---|---|---|
| Dashboard | http://localhost:3002 | Product dashboard — your entry point |
| Marketing | http://localhost:3000 | Public landing page |
Sign up at http://localhost:3002/sign-up, then connect GitHub from the Sources page. The API, database, and Redis run internally (the dashboard proxies API calls), so there are no other URLs to manage.
For developing without Docker. Requires Node.js 20+, pnpm 10+, and a local PostgreSQL instance.
make install # install dependencies
make migrate # create database tables
make dev # start all appsEach app reads its own .env.local (Next.js loads env from the app directory), so add one per app you run using the variables from .env.example.
Apps will start on 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.