유대선
프로젝트로
·기술 회고·1

Stack and storage: Next.js 15 + GitHub commit-as-database

Why I picked Next.js 15 + Vercel + GitHub Contents API for storage instead of a database.

Bootstrapping the site, the first real decision was where content lives.

Options I considered

OptionLive publish latencyBackupInfra costLock-in
Postgres on Vercel/Supabase~1smanual$0–10/mohigh (export work)
Vercel KV / Edge Config~1smanual$0high (proprietary)
GitHub Contents API + MDX in repo3–5sautomatic (git)$0low (just .mdx files)

What I picked

GitHub Contents API. Posts are .mdx files in this repo. Admin publishing → POST /api/admin/posts → Octokit commit → Vercel auto-rebuild → live.

Why

What I gave up

Verdict so far

Holds up. The two times I've hit friction (EROFS on production write, build-snapshot read staleness) were both fixable inside this architecture, not arguments against it. Notes are in other entries with kind=troubleshoot.