Portfolio PBN
Custom CMS with admin panel for a makeup artist portfolio
The Problem
A professional makeup artist needs a portfolio that she can update herself — without technical knowledge and without depending on a developer for every change.
The Solution
A custom-built CMS with an intuitive admin panel where the client manages her own content, images and services — with a public-facing portfolio that updates in real time.
Architecture
Next.js public portfolio with SEO-optimized pages and gallery
Protected Next.js admin panel for content management
Next.js API routes for content CRUD and image uploads
PostgreSQL on Neon for all content and service data
Cloudinary for image uploads, transformations, and optimized delivery
Key Features
Self-service content management
Client manages gallery, services, and copy without developer involvement
Image optimization pipeline
Upload to Cloudinary → automatic transforms → responsive srcset → lazy load
Service catalog with pricing
Fully editable service listings with categories and pricing
Contact form with email notifications
Client inquiries delivered via Resend with structured templates
SEO optimized public pages
Dynamic OG images, structured data, canonical URLs, and sitemap
Role-based access control
Admin panel protected with authentication — public portfolio stays open
+2 more features in the repo
Under the Hood
Image Pipeline
Every uploaded image goes through Cloudinary transforms, generates a responsive srcset, and is served lazily — optimal performance with zero manual optimization.
- Upload
- Cloudinary transform
- responsive srcset
- lazy load
Content Versioning
Draft/Published states for content allow the client to prepare updates before making them live.