Stratigraphy for your code.
A browser-native lines-of-code counter that visualizes how a public Git repository grows over time, broken down by language and prod/test. Zero server-side compute — everything runs in the browser.
?repo= query parameterpnpm install
pnpm dev
Open localhost:5173 and paste a repo URL.
Browser
├── Main thread (SvelteKit UI + Chart.js)
│ └── Comlink RPC ↔ Web Worker
│ ├── isomorphic-git (clone/fetch)
│ ├── lightning-fs (IndexedDB filesystem)
│ └── Line counting pipeline
└── IndexedDB (clone cache + results cache)
CORS proxy (Cloudflare Worker)
└── Forwards git protocol bytes with CORS headers
The worker clones the repo into an in-browser filesystem, walks the commit history day by day, counts lines per language, classifies prod vs test, and streams results back to the main thread for live chart rendering. See spec.md for the full design.
| Component | Technology |
|---|---|
| Framework | SvelteKit + Svelte 5 (static adapter) |
| Styling | Tailwind CSS v4 |
| Git in browser | isomorphic-git + lightning-fs |
| Charting | Chart.js + chartjs-plugin-zoom |
| Web Worker RPC | Comlink |
| CORS proxy | Cloudflare Worker + Hono |
| Package manager | pnpm |
pnpm install
pnpm dev
The dev server uses the public https://cors.isomorphic-git.org proxy, so you don't need to
run the CORS proxy locally.
pnpm test # unit tests (vitest)
pnpm test:coverage # with coverage
There's also a Go-based check runner for CI-style validation:
./scripts/check.sh # runs format, lint, type-check, tests, build
pnpm build # outputs static site to build/
pnpm preview # preview the production build
pnpm check # svelte-check type checking
pnpm lint # eslint
pnpm format # prettier
See docs/deploying.md for step-by-step deployment instructions for both the frontend (Cloudflare Pages) and the CORS proxy (Cloudflare Workers).
MIT OR Apache-2.0