Portfolio v3
The site you're on right now: a portfolio that is edited from its own private dashboard.
Earlier versions of my portfolio were hardcoded, so every new project meant a code change and a redeploy. For v3 I built the CMS first and the site second.
Each case study is assembled from ordered sections (hero, intro, galleries, features, tools, results and free text) that I can add, reorder and preview live before publishing. Services, journal posts, testimonials, the experience timeline and recognitions all come from the same database, and messages from the contact form land in an inbox inside the dashboard.
Results
98
Lighthouse performance score
< 5 min
To publish a new case study
0
Redeploys needed to update content
Under the hood
Section-based case studies
Projects store an ordered list of typed sections, validated with Zod, so every page can have its own shape.
An inbox for inquiries
Contact submissions are saved with read/unread state and send an email notification through Nodemailer.
Images handled in-house
Uploads are optimised server-side with Sharp and served by the app itself.
Stack
- Next.js 16
- React 19
- Prisma
- PostgreSQL
- Clerk
- Tailwind CSS v4
- Motion
- Sharp
- Nodemailer
Related Work

