Why I chose Sanity over building a custom admin for my portfolio
When I started rebuilding this portfolio, the first question was: where does the content live? The tempting answer — the one every developer considers — is to build your own admin. A custom dashboard, a database, a REST API. Full control. Maximum learning. Good portfolio piece, right?
Wrong. Or at least: wrong for this use case.
The real cost of custom tooling
A content management system that's actually usable — with a decent editor, image handling, draft/publish workflow, and schema validation — is approximately 3–4 weeks of focused work. For a personal portfolio that needs to exist in the world so you can get a job, that's 3–4 weeks you're not writing case studies, polishing your project pages, or applying.
What Sanity gives you on day one
A hosted Studio UI with a block editor, image upload with hotspot cropping, draft/publish workflow, revision history, and a webhook system for cache invalidation. The GROQ query language is expressive and co-locates data-fetching logic cleanly with your components. The free tier covers a personal site indefinitely.
The one real tradeoff
You're depending on a third-party service. If Sanity goes down, your editing workflow goes down. But your site doesn't — Next.js ISR means your pages are cached at the edge. The last-published version stays live. For a personal portfolio, that tradeoff is completely acceptable.
When you should build custom
If the CMS itself is the product — if you're building content infrastructure for a team, with custom workflows, approval chains, or domain-specific tooling — then custom is worth it. For a portfolio? Use Sanity. Ship the case studies instead.