
― A database-backed publishing system for projects, experience, credentials, and tools
A static portfolio makes each update a code change. I built this platform so I could manage projects, experience, certifications, and technology records through protected forms while keeping public pages searchable and shareable.
| Field | Record |
|---|---|
| Role | Product owner and full-stack developer |
| Period | 2024 to present |
| Status | Deployed and maintained |
| Managed content | Four database-backed content areas |
My first portfolio stored content inside the frontend. Adding a project required a code edit and deployment. That process slowed updates and made repeated metadata hard to manage.
I built the public site, admin dashboard, database models, forms, image upload, authentication, and SEO layer. I maintain the platform and use it as the publishing system for this case-study library.
Clerk protects admin routes. Zod validates form data before server actions send it through Prisma to MongoDB. Cloudinary stores uploaded images. React Query manages public and admin request state.
I kept the case-study body in Markdown so the editor can render headings, tables, code, images, and diagrams without a custom block schema.
The live platform now manages four content areas through authenticated administration. It handles CRUD actions, schema validation, image upload, project filters, structured metadata, sitemap generation, and responsive project pages. The case-study refresh adds 21 versioned Markdown files and a database sync command.
MongoDB stores the production content. Prisma provides the application data layer, while Markdown keeps the long-form project copy under version control.
The platform has no editorial revision history, role matrix, or automated database migration for content edits. MongoDB remains the runtime source, while Markdown files provide the versioned authoring source. The sync command must run after a content change.