This content originally appeared on DEV Community and was authored by Patryk Zdunowski
🔗 My Git Activity Story Repo: https://github.com/livesession/xyd
TL;DR — Highlights ⚡
- 🗓️ Range: Dec 01, 2024 → Aug 19, 2025 • 262 days
- 🧑💻 Commits: 182 • Active days: 108 (41.2%)
- 🧾 Raw lines: ~13.8M (exact: 13,785,977) (+~7.3M (exact: 7,341,870) / -~6.4M (exact: 6,444,107))
- 🏆 Spike #1: May 25, 2025 — ~4.0M (exact: 3,998,050) (JSON/YAML (any) 97.9% • Tests 99.8%)
- 🔥 Longest streak: 108 days • ⏰ Fav hours: 23:00 (75 commits), 22:00 (14 commits), 03:00 (10 commits)
- 🧼 Baseline (cleaned): excludes only the exact spike-causing tests/fixtures JSON/YAML; median 3,821/day, p90 46,572/day, avg 8,955.3 lines/commit
![]()
1) Daily activity (raw) 📈
Here’s every day’s line churn (adds + deletes). One day absolutely explodes — that’s our Spike #1.
Figure 1. Daily line changes with a 7-day average. Spike #1 is highlighted.
Why I looked into this 🤔
After eyeballing the daily chart, the totals looked like millions of lines 😳.
No way that was all hand-written code — so I dug into the spikes to separate real work from data dumps.
2) Okay, what actually caused Spike #1? 🔍
May 25, 2025 clocks in at ~4.0M (exact: 3,998,050) changed lines (29.0% of the whole period). Most of that is data-ish files (JSON/YAML) and some tests. Here are the heavyweight files that blew up the chart:
Top files by lines changed:
Path | Adds | Deletes | Total lines |
---|---|---|---|
packages/xyd-gql/fixtures/-2.complex.github/output.json | 2015878 | 0 | 2015878 |
packages/xyd-gql/fixtures/-2.complex.monday/output.json | 1896771 | 0 | 1896771 |
packages/xyd-gql/fixtures/-2.complex.github/input.graphql | 69424 | 0 | 69424 |
examples/graphql-monday/schema.graphql | 6093 | 0 | 6093 |
packages/xyd-gql/fixtures/-2.complex.monday/input.graphql | 6089 | 0 | 6089 |
packages/xyd-gql/fixtures/1.basic/output.json | 470 | 229 | 699 |
packages/xyd-gql/src/converters/gql-field.ts | 347 | 152 | 499 |
packages/xyd-gql/fixtures/4.union/output.json | 382 | 0 | 382 |
packages/xyd-gql/fixtures/3.opendocs/output.json | 334 | 0 | 334 |
packages/xyd-gql/fixtures/2.circular/output.json | 226 | 63 | 289 |
packages/xyd-gql/fixtures/5.flat/output2.json | 242 | 0 | 242 |
packages/xyd-gql/fixtures/-1.od_gqls.flat/output.json | 177 | 0 | 177 |
packages/xyd-gql/fixtures/5.flat/output.json | 177 | 0 | 177 |
packages/xyd-gql/src/utils.ts | 78 | 41 | 119 |
packages/xyd-gql/src/converters/gql-arg.ts | 66 | 34 | 100 |
packages/xyd-gql/src/schema.ts | 85 | 3 | 88 |
3) Top-10 spikes — where does “normal” start? 🧨→✅
I scanned the Top-10 spike days and measured how much came from JSON/YAML (any path) vs tests/fixtures. If the JSON/YAML share drops below 50%, I call it a “normal” spike (less data-dumpy, more code-y).
Rank | Date | Lines changed | JSON/YAML lines (any) | JSON/YAML share | Test lines | Tests share |
---|---|---|---|---|---|---|
#1 | 2025-05-25 | 3,998,050 | 3,915,074 | 97.9% | 3,990,595 | 99.8% |
#2 | 2025-05-26 | 3,914,637 | 3,913,711 | 100.0% | 3,914,073 | 100.0% |
#3 | 2025-06-17 | 1,208,291 | 1,203,994 | 99.6% | 1,202,583 | 99.5% |
#4 | 2025-06-15 | 1,136,853 | 1,136,043 | 99.9% | 1,136,045 | 99.9% |
#5 | 2025-08-01 | 504,080 | 419,431 | 83.2% | 353,330 | 70.1% |
#6 | 2025-07-03 | 417,164 | 415,954 | 99.7% | 354,678 | 85.0% |
#7 | 2025-06-03 | 387,474 | 385,791 | 99.6% | 382,974 | 98.8% |
#8 | 2025-06-11 | 341,573 | 338,595 | 99.1% | 333,956 | 97.8% |
#9 | 2025-06-01 | 301,086 | 300,793 | 99.9% | 300,825 | 99.9% |
#10 | 2025-05-24 | 155,551 | 79,612 | 51.2% | 1,261 | 0.8% |
⚠️ All Top 9 still look JSON/YAML-heavy (≥ 50%).
The exact files I muted for the baseline 🧹
Instead of nuking all JSON/YAML everywhere, I muted only the tests/fixtures JSON/YAML files that dominated those spike days. Here’s a preview:
File path (excluded in baseline) | Total lines over range |
---|---|
packages/xyd-gql/fixtures/-2.complex.github/output.json | 4,301,630 |
packages/xyd-gql/fixtures/-2.complex.monday/output.json | 3,793,543 |
packages/xyd-openapi/fixtures/4.abc/output.json | 2,315,366 |
packages/xyd-openapi/fixtures/-2.complex.openai/output.json | 678,992 |
packages/xyd-openapi/fixtures/-3.random/output.json | 556,089 |
packages/xyd-openapi/fixtures/4.abc/input.yaml | 205,065 |
packages/xyd-openapi/fixtures/-3.random/input.json | 151,742 |
packages/xyd-openapi/fixtures/-2.complex.openai/w.json | 88,362 |
packages/xyd-openapi/fixtures/-2.complex.openai/input.yaml | 39,860 |
packages/xyd-openapi/fixtures/-3.random/input.yaml | 3,579 |
packages/xyd-gql/fixtures/1.basic/output.json | 3,192 |
packages/xyd-openapi/fixtures/1.basic/output.json | 3,065 |
packages/xyd-gql/fixtures/6.default-values/output.json | 2,857 |
packages/xyd-openapi/fixtures/5.xdocs.codeLanguages/output.json | 2,025 |
packages/xyd-gql/fixtures/8.example/output.json | 1,864 |
packages/xyd-gql/fixtures/5.flat/output.json | 1,315 |
packages/xyd-gql/fixtures/2.circular/output.json | 1,256 |
packages/xyd-gql/fixtures/3.opendocs/output.json | 1,216 |
packages/xyd-gql/fixtures/4.union/output.json | 1,190 |
packages/xyd-openapi/fixtures/5.xdocs.sidebar/output.json | 947 |
packages/xyd-openapi/fixtures/2.more/output.json | 581 |
packages/xyd-gql/fixtures/7.type-args/output.json | 445 |
packages/xyd-openapi/fixtures/3.multiple-responses/output.json | 397 |
packages/xyd-openapi/fixtures/6.codeSamples/output.json | 302 |
packages/xyd-gql/fixtures/-1.od_gqls.flat/output.json | 289 |
4) Baseline (cleaned) — real rhythm 🧼🎵
Now we re-tell the story without those handful of tests/fixtures JSON/YAML files. Commits don’t change, but line volume becomes way more believable.
Weekday vibe
Figure 2. Adds + deletes by weekday after excluding only the spike-causing tests/fixtures JSON/YAML.
Weekday | Commits | Lines (filtered) |
---|---|---|
Mon | 27 | 137,104 |
Tue | 26 | 309,882 |
Wed | 32 | 288,590 |
Thu | 23 | 118,749 |
Fri | 32 | 231,663 |
Sat | 21 | 363,657 |
Sun | 21 | 180,215 |
Cumulative momentum
Figure 3. The long arc of the project with noisy data muted.
5) Cleaned total — still over 1M 🦄
🎉 Even after muting tests/fixtures JSON/YAML, the cleaned total lands at ~1.6M (exact: 1,629,860) (~12% of raw). Not the raw ~13.8M (exact: 13,785,977) churn — but 1M+ cleaned lines is still heavyweight work.
- Raw total: ~13.8M (exact: 13,785,977) → Cleaned: ~1.6M (exact: 1,629,860)
- Adds/Deletes (cleaned): +~942.2k (exact: 942,203) / -~687.7k (exact: 687,657)
- Avg per active day (cleaned): 15,091 lines/day
6) Little extras ⭐
- 🔥 Longest commit streak: 108 days (Dec 01, 2024 → Aug 19, 2025)
- ⏰ Favorite commit hours: 23:00 (75 commits), 22:00 (14 commits), 03:00 (10 commits)
- 📈 Baseline median/day: 3,821 • p90/day: 46,572 • Avg lines/commit: 8,955.3
This was a very busy time for me, but I'm happy that my contribution is in production. If you need a docs framework, let's check it out.
This content originally appeared on DEV Community and was authored by Patryk Zdunowski

Patryk Zdunowski | Sciencx (2025-08-20T12:11:18+00:00) How I got over 13M lines of code within 182 commits in my side project. Retrieved from https://www.scien.cx/2025/08/20/how-i-got-over-13m-lines-of-code-within-182-commits-in-my-side-project/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.