My Portfolio
Portfolio project by Nanakumor Princewill
This site — portfolio, SEO blog CMS, project pages, and admin publishing on Next.js + MongoDB.

Built for
My public presence online: recruiters, clients, and crawlers that need fast, readable pages plus a private admin flow to publish.
Problem
A static brochure site can’t ship long-form posts or unique project URLs well. A CMS without SSR/SEO discipline is invisible. This app had to be both a marketing site and a maintainable publishing system.
Overview
The portfolio combines a public marketing surface, SSR blog articles, dedicated project pages, and a JWT-protected admin CMS. Posts use structured content blocks, Cloudinary media, and sitemap/JSON-LD so content stays crawlable while the admin experience stays practical for drafting and publishing.
Capabilities
- Homepage sections for about, skills, projects, blog previews, and contact
- SSR blog list + article pages with semantic HTML for SEO
- Admin CMS: drafts, publish, content blocks, tags, categories
- Cloudinary uploads for images and video embeds
- Per-project detail routes with unique metadata
- Contact form email delivery via Nodemailer
- Theme/layout preferences for reading comfort
Architecture notes
- Next.js App Router: server components for crawlable content, client islands for interactivity
- MongoDB + Mongoose for posts; static TypeScript data for featured projects
- JWT cookie auth + middleware for `/admin` subpaths
- Dynamic sitemap/robots; Person / WebSite / BlogPosting JSON-LD
- Vercel deployment with Speed Insights instrumentation
Outcomes
- One codebase for portfolio, blog SEO, and CMS publishing
- Project and article URLs that are shareable and indexable
- Admin workflow that doesn’t require redeploying to ship a post
Tech stack
- Next.js
- React
- TypeScript
- Tailwind CSS
- Framer Motion
- MongoDB
- Mongoose
- Cloudinary
- Vercel