YOUR CREW // COMMITS // LINES // STREAKS

Your crew's
commits, on
one board.

Commits, lines, stars, streaks for you and your friends. Public repos from GitHub, private and work repos counted on your own machine. No tokens, numbers only.

HOW IT WORKS
snapshot.log

> GET /api/cron/snapshot

> authorization: Bearer ••••••••

> walking 4 users…

> octocat: 7 public repos, 112 commits

> stats/contributors → 202 (computing)

> retry in 2s… 200

> run 41 done: 4 users, 19 repos, 0 pending

> quota rest=4962/5000 graphql=4996/5000

>

What you get

A scoreboard for people who like shipping.

FEATURE_01

a leaderboard for your crew

Everyone signs in with GitHub, joins a crew with an invite code, and gets a row: commits, lines added and deleted, active repos, streak, stars, top language. Week, month, or year.

FEATURE_02

a page per person

Lines per week as mirrored bars, a 52-week calendar, and the repos you shipped to, with the numbers per repo.

FEATURE_03

a global board

Everyone who ever signed in, aggregate numbers only. Profiles open only if the person allows it.

FEATURE_04

private work included

Not through GitHub. Your own machine counts its repos and sends numbers. Work repos too, without your employer being involved.

How it works

Two GitHub calls per person per night. Zero on page load.

01_CONNECT

Sign in with GitHub

Public scope only. We learn who you are and never touch your repos. Public activity is snapshotted nightly.

02_LINK

One command, once

Your computer counts its own git repos and uploads weekly numbers. Private and work repos included, no GitHub token.

03_COMPARE

One board

Crews, global board, per-dev pages. Reads only from Postgres, so it loads instantly.

Why it's safe

GitHub has no permission that gives out commit numbers without also giving out source. So we never ask GitHub for private repos.

SAFE_01

no tokens

The sign-in asks for read:user and user:email, nothing more. Nothing on GitHub can ever read or write your code on our behalf.

SAFE_02

numbers only

The CLI sends a keyed hash of each remote URL, a guessed language, per-week and per-day commits / lines added / lines deleted for your commits. Repo names only if you turn them on. No paths, no diffs, no content.

SAFE_03

your machine, your rules

It runs as you, reads git history the way git log does, and re-runs daily in the background. gitstats unlink removes it. Revoke a computer on the settings page.

SAFE_04

you decide what is shown

Per profile: who can open it, whether private repos count in what others see, and whether repo names are shown or anonymised.

SAFE_05

auditable

The CLI is open source: ~700 lines of TypeScript with the compiled output committed next to it. Read it, or point a proxy at it. It shows you what it found and asks before the first upload.

THE_COMMAND

One command, once

Run it per computer after signing in. Needs Node.js. It shows what it found and asks before uploading.

$

What lands on the board

METRIC_01
commits
per week, month, year
METRIC_02
lines added
weekly buckets, default branch
METRIC_03
lines deleted
same source, same caveats
METRIC_04
stars
across repos you have committed to
METRIC_05
active repos
repos with commits in the window
METRIC_06
streak
consecutive days with contributions · weekdays-only is a setting

Questions

Who is this for?

A handful of friends who want to see who actually shipped this week. No business, no leaderboard for strangers, no anti-cheat. If you fake it, you only fool your friends.

What does GitHub sign-in give you?

Your login, avatar, and public activity. The scopes are read:user and user:email. We never store the OAuth token and never ask for repo access.

How do private repos get counted?

You run one command on your computer. It reads your git history like git log does and uploads weekly totals plus commits and lines per day. No names unless you turn them on, never content.

Is it safe to run at work?

Nothing leaves the machine except numbers under a keyed hash. No code, filenames, branch names, or commit messages. It doesn't touch GitHub at all. The source is public and short.

Why are line counts so big?

Lockfiles and generated code count as lines, on GitHub and here. Nothing is filtered, because any filter would be a guess.

How fresh is it?

GitHub public activity: every night at 03:00 UTC. Linked computers: once a day in the background, or whenever you run sync. The page itself reads only the database, so it is always instant.

What can others see?

A small matrix in settings, with one column for crewmates and one for everyone else signed in: who may open your page, whether private repos count in the numbers they see, and whether repo names are shown, public-only, or hidden. Everyone else starts at the strict end.

Can I leave?

Settings → Data. EXPORT hands you every number we hold as JSON; DELETE ACCOUNT wipes your rows, your linked computers and your crew memberships, and signs you out. Run gitstats unlink on your machines to remove the local config too.

Known limits

weekly granularity

GitHub only exposes lines of code per week, and we do not fake a daily split. Per-day numbers exist only for repos a linked computer counted.

only machines you link

Private repos are counted on computers where you ran the command. Commit from a second laptop? Link it too.

your git email

Local counting attributes commits by the emails on your profile and in your git config. Add others in the CLI.

default branch only

Contributor stats count commits on the default branch.

stats warm-up

GitHub answers 202 while it computes a repo. We retry with backoff and pick it up next night if it is still cooking.