Problem
A portfolio needs a public proof surface plus private tools for content, career data, and technical case studies.
Constraints
- Keep public pages crawlable while moving editing workflows behind auth.
- Avoid duplicating structured career data into freeform content blocks.
What I built
A production Next.js system with public pages, admin tooling, content APIs, and structured recruiter-facing proof.
Architecture
Public portfolio site plus RBAC-protected admin CMS, Postgres-backed content APIs, and modular homepage composition.
Public UI
Typed API boundary
Database-backed content
Decisions and trade-offs
- Kept structured tables as source of truth for projects, work, skills, education, and certifications.
- Used public content blocks only for editorial homepage copy.
- Made resume PDF generation consume CMS data directly.
Outcome
Recruiter-facing portfolio content, public case studies, and the downloadable resume can now be maintained from the same CMS-backed data model.
Repository context
The repository is private because it contains personal CMS and deployment wiring; the public case study focuses on architecture, trade-offs, and shipped behavior.