All Projects
In ProductionSolo Engineer, Designer & ArchitectFlagship · Advanced

Portfolio Engine

A portfolio engineered like a product.

This portfolio is not a template — it is a production-grade full-stack system built to the same engineering standards I apply to every project I ship. It's the most honest signal of how I work: every architectural decision, every performance trade-off, every design choice is mine.

Live Demo
Portfolio Engine

The Story

Why this exists.

The Problem

Most developer portfolios are either a Figma template cloned from a YouTube tutorial or a list of GitHub repos. Neither communicates what actually matters to a hiring engineer: how you think, how you architect, what you build when there are no constraints, and whether you can ship something that feels like a real product.

Why It Matters

A portfolio is the only piece of software a developer ships entirely for themselves — no client requirements, no team constraints, no technical debt inherited from others. What you choose to build and how you choose to build it is the purest signal of your engineering taste. This portfolio is that signal.

The Solution

A Next.js 14 App Router portfolio with a custom component library, Apple-inspired design system, GSAP animations, Lenis smooth scroll, a voice AI agent, a C++ Drogon backend API, 3-tier project detail pages, a contact system via Brevo, and a GitHub activity feed — all deployed on Vercel Edge.

Product Features

What it does.

Apple-Inspired Design System

A complete design token system built in CSS custom properties — fluid typography scale, spacing system, card surfaces, and colour palette inspired by Apple's product pages. Every visual decision is intentional and documented.

Apple-Inspired Design System

Voice AI Agent

An embedded voice assistant powered by Vapi that lets visitors ask questions about my work, experience, and projects — answered in real-time with a conversational AI model trained on portfolio context.

3-Tier Project Detail System

Projects are classified into 3 levels of detail — minimal premium pages for small projects, full case studies for intermediate work, and complete product launch experiences for flagship systems.

3-Tier Project Detail System

GSAP + Lenis Animations

Scroll-driven animations, fade-up reveals, and sticky scroll storytelling powered by GSAP. Lenis provides hardware-accelerated smooth scrolling with configurable easing.

C++ Drogon Backend

A high-performance C++ backend built with the Drogon framework serves dynamic data — GitHub activity, visitor analytics, and real-time stats — with sub-millisecond response times.

System Architecture

How every layer connects.

Next.js SSR/SSG on Vercel Edge → C++ Drogon for dynamic API → Brevo for email → Vapi for voice

FrontendNext.js 14 App RouterRSC for static content, Client Components for interactivity
Design SystemCSS Custom PropertiesFluid type scale, spacing tokens, Apple-inspired colour palette
AnimationGSAP + LenisScroll animations, smooth scroll, sticky storytelling
Voice AIVapiVoice assistant with portfolio-specific AI context
EmailBrevo APIContact form — transactional email delivery
Backend APIC++ DrogonHigh-performance dynamic data API
DeploymentVercel EdgeGlobal CDN, Edge Functions, ISR

Technical Deep Dive

Under the hood.

Why C++ Drogon for the Backend API

Most portfolio backends are Express or FastAPI. I chose Drogon — a C++ async HTTP framework — for three reasons: (1) it demonstrates systems programming ability, (2) it is measurably faster than any interpreted runtime for simple API endpoints, (3) it is architecturally interesting. The Drogon server handles GitHub activity aggregation, visitor stats, and health endpoints with sub-millisecond response times and zero runtime overhead.

// Drogon controller for GitHub activity endpoint
void GithubController::getActivity(
    const HttpRequestPtr& req,
    std::function<void(const HttpResponsePtr&)>&& callback
) {
    auto client = HttpClient::newHttpClient("https://api.github.com");
    auto r = HttpRequest::newHttpRequest();
    r->setPath("/users/Naren1520/events");
    r->addHeader("Authorization", "Bearer " + apiKey_);
    client->sendRequest(r, [callback](ReqResult res, const HttpResponsePtr& resp) {
        callback(HttpResponse::newHttpJsonResponse(parseActivity(resp->body())));
    });
}

3-Tier Project Architecture

Projects are typed with a `difficulty` field that maps to one of three detail levels. The dynamic route `app/projects/[id]/page.tsx` reads the project's detail data and renders the appropriate Level1Page, Level2Page, or Level3Page component. Each level is a distinct React component with a purpose-built layout — minimal for Level 1, case study for Level 2, full product launch for Level 3. Projects without detail data fall back to a Level 1 page using their base `projects.ts` fields automatically.

Performance Architecture

Every page is either statically generated or incrementally regenerated. Server Components handle all data fetching — no client-side waterfalls. Images use Next.js Image Optimisation for automatic WebP and AVIF conversion. GSAP animations are client-only and don't block the critical rendering path. The result: Lighthouse Performance 97+, LCP under 1.5s, CLS 0.

Engineering Decisions

Challenge → Decision → Result.

Template vs. custom-built portfolio

Decision

Built from zero — custom design system, custom components

Why

A template signals that you copy. A custom-built system signals how you think. The engineering decisions in this portfolio are the portfolio.

Result

Lighthouse 97+, fully custom, zero template dependencies.

Node.js vs. C++ for the backend API

Decision

C++ Drogon

Why

This is a portfolio — every technology choice communicates something. A C++ backend signals systems depth. It also serves as a live demonstration of the skills described in the resume.

Result

Sub-millisecond API responses, working C++ HTTP server in production.

Framer Motion vs. GSAP for animations

Decision

GSAP + ScrollTrigger

Why

GSAP gives finer control over scroll-driven animations and timeline sequencing. Framer Motion is excellent for component transitions but not for the complex scroll storytelling this portfolio requires.

Result

Fluid scroll animations with zero layout shift or jank.

Performance & Scale

By the numbers.

97+Lighthouse Performancedesktop and mobile
< 1.5sLCPLargest Contentful Paint
0CLSzero layout shift
< 1msDrogon API Responsep95 on simple endpoints

Deployment & Infrastructure

Production setup.

Deployment

Next.js on Vercel Edge CDN with ISR. C++ Drogon backend containerised on Render. Brevo for transactional email. Vapi for voice AI.

CI/CD

GitHub Actions — TypeScript + ESLint + Lighthouse CI on PR. Auto-deploy to Vercel on merge to main.

Monitoring

Vercel Analytics for Core Web Vitals. Render metrics for Drogon CPU/memory. Brevo dashboard for email delivery.

Challenges & Failures

What broke — and how I fixed it.

Challenge

GSAP ScrollTrigger conflicting with Lenis smooth scroll on iOS Safari.

Fix

Synchronised GSAP ScrollTrigger to use Lenis's scroll position via the ScrollTrigger.scrollerProxy API — all animations now use Lenis's virtual scroll position.

Challenge

C++ Drogon cold starts on Render's free tier.

Fix

Added a keep-alive ping from Vercel Edge Functions every 5 minutes to prevent the Render dyno from sleeping.

Challenge

Hydration mismatches between server and client components in complex sections.

Fix

Audited all Client Components for browser-only APIs (window, document) and wrapped them in dynamic imports with ssr: false where needed.

What I Learned

Key takeaways.

Future Roadmap

Where this is going.

v2.0

  • WebGL hero section with custom shader for the flagship project scenes
  • Reading time and difficulty indicators on all project pages
  • Dark mode with smooth transition — system preference detection + manual toggle

Screenshots

The product.

Portfolio hero section

Hero section — GSAP animations, Apple-inspired typography

Project detail page

Level 3 project detail — full product launch layout

Technology Stack

Built with.

Frontend

Next.js 14TypeScript

Animation

GSAP

Scroll

Lenis

Backend

C++ Drogon

Voice AI

Vapi

Email

Brevo

Deployment

Vercel

Ready to dive in?

This isn't just a project.
It's a system I designed,
engineered, and shipped.

Live Demo ← All Projects