One backend developer. Telegram integration, billing, vector search, federation, multi-tenancy — eighteen months full-time. Combat code (Go-prod + TS + SQL, no tests) is 128k loc. Of that, the founder hand-typed ~6.4k — just the parts where architecture, contracts, and trade-offs compound. Claude Code drafted the rest under review; gqlgen + sqlc + moq added another 139k for free — static code after codegen, not runtime reflection. One person, ×54 leverage across 177k of owned code.
177k owned code ÷ 6.4k typed by hand
Hand-written across Go, TypeScript, SQL. 15 months of keystrokes.
From schema / queries / interfaces. Never edited by hand.
Tiptap bundle + legacy Milkdown. Not ours to refactor.
Commits over 15 months. ≈ 108/month · 3.6/day.
Obsidian publishing platform with Telegram bot, billing, vector search, federation, multi-tenancy. One backend dev.
Hand-writing GraphQL resolvers, SQL bindings, and mocks would eat half the calendar.
Where can a codegen contract replace hand-written glue without losing safety?
Schema → gqlgen. Queries → sqlc. Interfaces → moq. 139k loc emerges for free.
Forms, templates, markdown base. A content layer designed from day one to be readable by agents, not just humans.
Notes, sources, links — served as a queryable graph an LLM can walk, not just read.
Federated meshes: hubs publish, peers subscribe, agents stitch the pieces back together.
A retrieval surface other agents can call. Your context, on tap, with provenance.
Schema-first: missing field → resolver appears immediately. These details flow smoothly into the process. 139k loc for free.
Not magic. Not religion. A type-safe interface both sides agree on — that's the whole pitch.
Reactive, no virtual DOM. Claude Code picks up the pattern from examples and keeps going confidently. 41k loc, still fast.
Local SQLite for speed, continuous replication to S3 for durability. Embedded DB, cloud durability.
Vibe-coded code is fragile: it ships fast and breaks on the third edge case. This codebase has been
pounded on for over a year — by paying users, by Claude, by tests, by every refactor. The 2.53× test
ratio, the 120 forward-only migrations, the typed glue from schema.sql to UI — that's not
decoration. It's the difference between a prototype and a markdown-based rock.
1,615 commits of refactors, regressions, and real users. 2.53× test ratio against production Go. 120 migrations, all forward-only. Litestream to S3 so the data outlives the box.
5% of combat code. Architecture, contracts, the parts where a wrong call costs a month.
95% of combat code. Drafted under review. Reads like a junior with infinite patience and zero opinions.
From schema.graphql, schema.sql, Go interfaces. Free — if the contract is right.
177k owned (own + codegen) ÷ 6.4k human-typed. Per-line.
Handlers, services, GraphQL resolvers, jobs, the bot, billing — the code that ships.
Table-driven unit tests, integration against real SQLite, GraphQL snapshots. The ratio is what makes refactors cheap.
120 files, one per schema change. Forward-only, append-only, append-faster.
SELECTs feeding GraphQL. sqlc emits typed Go functions from these.
INSERT / UPDATE / DELETE. Transactional where it matters, idempotent where it counts.
We describe the contract once — schema.graphql, schema.sql,
a Go interface — and the toolchain emits typed glue all the way to the call site.
That ratio is the entire reason these tools exist.
35.0% · 15 months of hand-written code.
27.5% · derived from contracts. Free.
37.6% · Tiptap bundle + legacy Milkdown.
100% · what the linter sees.
Founder types ~6.4k of combat code (architecture + tricky parts). Claude drafts 121.7k under review. Codegen adds 139k. ×54 leverage on 177k owned.
Go monolith + embedded SQLite + Litestream to S3. No orchestration, no migrations dance, no cold-start ceremony — just ./trip2g.
SQLite doesn't shard easily — but the protocol is federated. One node handles thousands of req/s; thousands of nodes form the mesh.
A deep-dive into how the codebase grew: what shipped first, what got refactored, and what we'd do differently.
read →How a single interface keeps every use case testable, portable, and free from framework lock-in.
read →trip2g is an open-source publishing platform. If you read this far, the easiest way to help is a star — it signals the project to other devs and keeps the work going.