Skip to content

Andrew5194/baseline

Repository files navigation

Baseline

Measure your rate of progress.

Build and Push Docker Image Visitors License: AGPL v3


How Baseline Works

Baseline integrates with your existing development and project management tools, captures activity passively, and derives quantitative metrics and trend analysis — with minimal configuration required.

  1. Connect your tools — Link GitHub, your calendar, and your project boards. Baseline pulls your activity automatically — no timers, no manual entry, no behavior changes.
  2. See your metrics — Baseline calculates the metrics that matter: output, cycle time, focus hours, and consistency scores.
  3. 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.

Getting Started

Configuration

All configuration lives in a single .env file at the project root. Copy the .env.example to .env:

cp .env.example .env

Then, fill in the following environment variables:

Note: Create an OAuth app at https://github.com/settings/developers to generate GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET and 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 origin

Everything else is configured automatically. Advanced overrides (API_INTERNAL_URL, NEXT_PUBLIC_API_URL for split-origin deployments) are documented in .env.example.

Docker Compose (recommended)

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.

Building from Source

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 apps

Each 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).

Project Structure

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

Contributing

Contributions are welcome. Before submitting, please read CONTRIBUTING.md and sign the CLA.

License

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.

About

A next-gen productivity platform. Connect your tools. Establish your baseline. Shape your trajectory.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors