I built this platform to support two needs in one system: a focused public portfolio and a private workspace for drafting, revising, iterating, and preparing content for publication.
At a Glance
Role
Product design, system design, and full-stack implementation
Scope
Public portfolio + private editor lab
Focus
Content operations and publishing workflows
Stack
Next.js, Clerk, Prisma, PostgreSQL, Zod, Vercel Blob
Public Demo
Try a public walkthrough of the editor workflow using seeded sample content. Changes reset on refresh.
Context
The core challenge was keeping the public site focused and credible while giving myself a private environment for testing publishing workflows, content operations, and product ideas without exposing unfinished work to visitors.
I also used the project to explore editorial workflows more deeply by working through how drafting, revision history, media handling, and public delivery fit together in one platform.
Product Surface
- Public portfolio surface designed for fast review, focused storytelling, and clear navigation around selected engineering work.
- Private editor lab at
/documentsfor authenticated drafting, editing, image upload, and revision-history workflows before content moves into public view. - Public editor demo at
/demo/editorthat reuses the same workspace UI with seeded sample content so visitors can walk through editing, revisions, publishing, and image upload behavior safely. - Revision-aware authoring model that preserves document history instead of relying on overwrite-only editing, making iteration safer and future publishing flows easier to support.
- Markdown-based content flow that supports inline images across editor preview and published pages.
Technical Decisions
- Next.js App Router + Route Handlers to keep rendering and mutation paths in one application surface and reduce coordination overhead as the platform evolves.
- Clerk authentication boundaries to isolate private editing and API mutation flows while keeping the public portfolio simple and accessible.
- Prisma + PostgreSQL persistence for predictable data access, durable revision storage, and a content model that can support future workflow expansion.
- Zod request validation to enforce consistent mutation contracts and fail fast when requests do not match expected input.
- Vercel Blob-backed image uploads to support document-scoped media, validate upload constraints, and keep markdown rendering consistent across preview and published content.
Current Outcomes
- The public portfolio stays focused because drafting and editing happen in a separate authenticated surface.
- The platform now supports revision-preserving authoring instead of overwrite-only content updates.
- Revision comparison v1 now supports comparing a selected revision against older saved versions for faster editorial review.
- Image uploads are part of the writing workflow, with uploaded media rendered in preview and public markdown pages.
- One shared system foundation now supports both portfolio presentation and ongoing publishing-workflow experimentation.
Next Milestones
- Harden the publishing workflow with slug conflict guidance, publish previews, and clearer status transitions.
- Expand blog and project presentation templates while keeping one shared content model.
- Deepen revision comparison tooling with clearer diff workflows, better visual polish, and revert support.