Code Health

Snapshot dc3bf90 · 2026-07-12T18:08:21.942Z · 1 snapshot(s) in metrics.jsonl

Summary

Metric Value vs previous
Source LOC (product) 11459 —
Test LOC 2703 —
Test:code ratio 0.24 —
Source files 157 —
Unit tests 179 in 27 files (3.1s) —
E2E specs 19 in 13 files —
Line coverage (src) 22.7% —
Duplication 2.8% (70 clones) —
Outdated deps 6 —
Vulnerabilities (crit/high) 0/1 —
Circular deps 0 —
Layer-rule violations 0 —
API routes vs spec 14 routes / 14 spec paths —

LOC by layer

Layer LOC
scripts 5832
pages 2648
worker 2632
lib 1555
components 799
e2e 454
other 118
layouts 89
src-other 35

Hotspots (churn × complexity, trailing 90 days)

A complex file nobody touches is dormant risk; a complex file changed weekly is the next refactor candidate.

# File LOC Complexity Churn Score
1 src/pages/spots/index.astro 1048 75 30 2250
2 src/lib/spots-api.ts 281 43 13 559
3 src/worker/queries.ts 167 36 9 324
4 src/worker/index.ts 115 28 10 280
5 src/worker/handlers/instagram.ts 326 38 7 266
6 scripts/lib/osm-import.mjs 233 55 4 220
7 src/components/InstagramEmbeds.astro 172 17 8 136
8 src/pages/spots/[slug].astro 279 15 9 135
9 src/lib/spots-leaflet.ts 169 19 5 95
10 scripts/sync-spot-images-to-r2.mjs 243 46 2 92

Threshold watch (size/complexity)

File LOC Complexity Trigger
src/pages/spots/index.astro 1048 75 LOC > 400, complexity > 40
src/worker/index.test.ts 754 14 LOC > 400
src/lib/spots-api.ts 281 43 complexity > 40
scripts/sync-spot-images-to-r2.mjs 243 46 complexity > 40
scripts/lib/osm-import.mjs 233 55 complexity > 40
scripts/lib/country-boundaries.mjs 202 44 complexity > 40

Breaches

None. ✅