Skip to content
inferred from GitHub

commit constellation

Point it at any git repo and it draws the commit history as a night sky: files are stars sized by how often they change, a line means two files keep changing in the same commit. Zero dependencies.

Core trick

Counts per-file changes and per-commit file co-occurrence from git log, then draws them as sized stars and edges with zero dependencies.

Evidence

README matched "Claude Build Day": Built for the Mumbai Claude Build Day, 23 Sep 2026. Internals, and the traps worth not

Tags

harsh-bajpai2615/commit-constellation★ 00 forksJavaScriptMITCreated Sep 23, 2026 · last push Sep 23, 2026

README excerpt

# Commit Constellation

Point it at any git repo. It reads the commit history and draws the repo as a night sky:
every file is a star sized by how often it changes, and a line between two stars means
those files keep changing in the same commit.

```bash
node server.mjs          # http://localhost:4173, no install step
```

![expressjs/express rendered as a constellation: coloured clusters of stars joined by fine
lines, a 24-hour dial reading 9am, and a caption reading "2,000 commits across 307
files"](docs/express.png)

Same tool, different working lives. `expressjs/express` above peaks at **9am**;
`sveltejs/svelte` peaks at **1am**, with 42% of its commits after midnight. A 78-commit
utility library is a figure you can take in at a glance:

| `sveltejs/svelte` — 1am | `sindresorhus/slugify` — 78 commits |
|---|---|
| ![svelte, a dense blue cluster with the dial reading 1am](docs/svelte.png) | ![slugify, a dozen bright stars joined into a clear figure](docs/slugify.png) |

---

## What it is actually for

**One job: show you which files move together, and when the repo is written.**

Two things are on screen that you cannot get from a file tree, a language breakdown, or a
contributor graph:

**1. Co-change.** The lines are not imports and nobody declared them. They are drawn
because those two files kept appearing in the same commit. That is a behavioural fact
about how the code is actually worked on, and it survives refactors, dependency injection,
and any amount of indirect