Effort
Last updated 2026-11-12
What it took to build this. The counted figures are counted; the estimated ones are labelled, because the difference matters.
Build
51,459
lines of TypeScript
295
modules
823
commits
243.8 h
hours (estimated)
15.8 months
without AI (estimated)
554
released versions
51,459 code · 17,863 comment (24%) · 4,535 blank. 823 commits across 56 days and 143 working stretches.
How the hours were reconstructed
From commit timestamps: commits less than 90 minutes apart are treated as one working stretch, and each stretch is credited 20 minutes of lead-in for the work before its first commit — the first commit of a sitting is never the first minute of it.
A stretch is also never credited less than an hour. Measured from its first commit to its last, a sitting that produced a single commit measures zero and would be counted as the lead-in alone, whatever it actually took. That is the case for 16 of the 143 stretches here.
Git records moments, not durations. This is a reconstruction rather than a measurement, and it cannot see thinking, reading, or the work that produced no commit at all.
How the comparison was estimated
Writing the same 51,459 lines by hand would be roughly 15.8 months for one developer (343 working days) — on the order of 11× the time actually spent.
Estimated from volume, not from anything measured here: the midpoint of 100–200 lines of finished, reviewed code per eight-hour day, the usual band for one developer on a new codebase, over months of 21.75 working days.
It counts the lines that exist today and ignores everything a person would have thrown away getting there, so if anything it flatters the comparison. Treat it as an order of magnitude rather than a figure.
Largest modules
| src/lib/exchanges.ts | 6,194 |
| src/lib/changelog.ts | 4,984 |
| src/components/ExchangePanel.tsx | 4,259 |
| src/app/admin/page.tsx | 2,638 |
| src/components/TransactionStatus.tsx | 2,170 |
| src/components/Landing.tsx | 2,072 |
| src/components/PayRequestView.tsx | 986 |
| src/components/ExchangeWorkspace.tsx | 943 |
| src/components/WalletPanel.tsx | 901 |
| src/components/LightningSend.tsx | 832 |
What is not in these numbers
Lines are a poor measure of work and a worse measure of value. Several of the most useful changes here removed code or changed a single figure: dropping the email path deleted a dependency, and correcting a column that reported volume as revenue was a few characters.
Not counted either: the bugs found by testing rather than by writing — a wallet generator deriving addresses on the wrong chain, a content-security policy that silently blocked every script, a plan that could not be started once you used its own privacy feature. Finding those took longer than writing what replaced them.
No account, no sign-up, and nothing is held here — your browser pays each provider directly.
Questions about any of this? The source is the authority — everything described here can be checked against it.