Portfolio v2

My personal portfolio is built as a real full-stack application rather than a static collection of pages. It combines a MongoDB-backed content system, admin authentication, project case studies, Vercel Blob media, and an AI-assisted administrative workflow.

Status: Active production portfolioDuration: March 2025 – PresentRole: Solo Full-Stack DeveloperTeam: 1
Portfolio v2 banner

Overview

Purpose: Use my own portfolio as a practical demonstration of architecture, backend development, data modeling, authentication, cloud infrastructure, and AI-assisted administration.

Target users: Recruiters; engineering managers; developers reviewing my work; myself as the content administrator.

  • Database-backed homepage
  • Database-backed project detail pages
  • Blog CMS
  • Admin authentication
  • Vercel Blob screenshot management
  • AI-assisted content administration
  • MongoDB-based content source of truth

Tech Stack

Frontend

  • Next.js 16
  • React 19
  • Tailwind CSS
  • Radix UI
  • Framer Motion
  • Three.js / React Three Fiber

Backend

  • Next.js Server Components
  • API Route Handlers
  • Server-side auth utilities

Database

  • MongoDB Atlas
  • Mongoose

Auth

  • JWT
  • bcryptjs
  • httpOnly cookies

AI

  • MCP server
  • MongoDB MCP integration
  • AI-assisted admin tooling

Deployment

  • Vercel
  • Vercel Blob
  • MongoDB Atlas
  • Resend

Features

Database-Backed Homepage

Homepage sections render from a single MongoDB Content document: Navbar, Hero, About, Experience, Resume, Work, Contact, Footer.

Benefit: This keeps display components focused on rendering while the database owns editable content.

Blog CMS

The blog supports public reads, authenticated admin creation, editing, and deletion.

How: Blog content is persisted through Mongoose rather than hardcoded in components.

Database-Backed Project Case Studies

Each project detail page is stored as a Project document, with structured sections: overview, tech stack, features, architecture, database design, API documentation, authentication, challenges, performance, security, deployment, improvements, lessons, metrics, timeline, recruiter summary, screenshots.

How: Vercel Blob stores project media rather than coupling screenshots to local source paths.

AI-Assisted Administration

The portfolio includes an MCP-backed administration layer designed to let me manage content conversationally.

Benefit: The security boundary remains server-authoritative: AI output can request an action, but authorization is determined independently by the application.

Cloud Infrastructure Automation

I configured MongoDB Atlas, Vercel environment variables, Blob storage, and MCP tooling through CLI-based workflows where possible.

Architecture

Next.js Server Components→server-side data layer→MongoDB Atlas→structured Content/Project/Blog models→Vercel Blob for media

App flow: Administrative requests pass through authenticated server-side boundaries before content mutations are allowed.

Database Design

  • Content — Single document for site-wide homepage content
  • Project — One document per project slug, allowing each case study to evolve independently
  • Blog — One document per post with title, description, image, body, and timestamps

This model keeps the content architecture simple while avoiding duplicated hardcoded data across components.

API Documentation

MethodURLPurposeAuth
POST/api/contactSend contact email
POST/api/admin-loginAuthenticate administrator
GET/POST/PATCH/DELETE/api/blogBlog content operations
POST/api/chatAI/MCP orchestration
GET/PATCHProject/content APIsCMS-backed portfolio content operations

Authentication Flow

login: Admin credentials → bcrypt verification → JWT issuance → httpOnly cookie → server validation → authorized mutation.

notes: AI-admin capabilities use the same server authorization boundary and do not trust model output as proof of identity.

Screenshots

Showcase Page
Showcase Page

Challenges

Problem: Removing Multiple Sources of Truth — content had accumulated across legacy and component-level structures during framework evolution.

Solution: I consolidated homepage content into one MongoDB-backed source and made rendering components receive data rather than own duplicated content.

Problem: Vite-to-Next.js Migration — the original application architecture used Vite-specific patterns.

Solution: I migrated the application to Next.js App Router and progressively moved data loading to Server Components.

Problem: Building Safe AI Administration — an AI agent with write capability needs stronger security boundaries than a normal chatbot.

Solution: I separated model intent from application authorization. The server decides which tools/actions are available based on the authenticated session.

Problem: Structured PDP Content — large project case studies become difficult to maintain when stored as massive inline objects.

Solution: I moved project content into MongoDB Project documents and media into Vercel Blob.

Performance

  • Server Components for data-driven pages
  • Reduced duplicated client-side data
  • Structured DB reads
  • Blob-backed media
  • Next.js rendering and caching capabilities
  • Interactive client components isolated from server-rendered content

Security

  • bcrypt-hashed admin password
  • JWT auth
  • httpOnly cookies
  • Gitignored environment secrets
  • MongoDB/Vercel credentials stored outside source
  • Server-side authorization for AI administrative actions
  • Clear separation between public read capabilities and privileged mutations

Deployment

hosting: Vercel

prodSetup: Database: MongoDB Atlas · Media: Vercel Blob · Email: Resend. The deployment architecture is environment-driven and designed around the same production services used by the application locally and in hosted environments.

Future Improvements

  • More AI-assisted content workflows
  • Richer case-study media
  • Better project search and discovery
  • Additional admin automation
  • Expanded analytics and recruiter-focused presentation

Lessons Learned

  • A portfolio is more persuasive when the architecture itself demonstrates engineering capability.
  • Content should have one clear source of truth.
  • AI administration requires explicit tool permissions and server-side authorization.
  • Data migrations are easier when display components do not own business content.
  • Cloud tooling and content infrastructure are useful portfolio evidence when they solve real maintenance problems.

Project Metrics

devTime: March 2025 – Presentcommits: 50+ (originally captured)technologies: Next.js, React, MongoDB Atlas, JWT, Vercel Blob, MCP

Timeline

  1. March 2025 — Initial portfolio
  2. July 2026 — Migration from Vite to Next.js
  3. August 2026 — Admin auth, MongoDB content architecture, project PDP system, Blob media, and MCP-assisted administration
  4. Ongoing — Content refinement, infrastructure hardening, and recruiter-facing improvements

Ask about this project

Depends on the /api/chat orchestrator and MCP tool server — not built yet (see plan.md).

Recruiter Summary

Role: Solo Full-Stack Developer

Responsibilities:
  • Migrated a real application from Vite to Next.js
  • Built JWT-based admin authentication
  • Built MongoDB-backed homepage, blog, and project-content systems
  • Designed Vercel Blob media storage
  • Created MCP/AI-assisted admin workflows
  • Consolidated duplicated content into a database source of truth
  • Structured project case studies as editable data rather than hardcoded JSX
Impact:
  • Turned a static portfolio into a maintainable full-stack product
  • Reduced content duplication
  • Demonstrated backend, database, auth, cloud, and AI-integration capability through the portfolio itself
Next.jsReactMongoDB AtlasJWTVercel BlobMCP
MigrationCMS designauthenticationcloud infrastructureAI toolingfull-stack architecture