Home
All work

Personal Project

Personal Portfolio

A from-scratch engineering portfolio built to demonstrate full-stack craft rather than just describe it — every interaction, from the live GitHub contribution heatmap to the AI-assisted resume builder, is real working software rather than a mockup. Built solo on Next.js 16 (App Router) and React 19 with a fully data-driven content layer, it ships a reusable case-study system, a fuzzy-searchable tools directory, a multi-template resume/PDF generator with LLM-based job tailoring, and a Google-Sheets-backed contact pipeline enriched with IP geolocation and visitor analytics. The goal: a site that reads less like a résumé and more like a running product — this case study included.

Jul 2026 – Present· Sole Developer, Designer & Content Author

Problem

What needed to change

A static résumé PDF and a generic one-pager portfolio don't prove anything about how someone actually builds software — anyone can list "React" and "Next.js" as skills. I wanted a portfolio that was itself the strongest engineering sample: real APIs and real data pipelines behind every feature, not screenshots of imagined ones.

Approach

What I built

Designed and built the entire site solo, end to end — architecture, UI, animation, backend glue, and every word of content. Structured every section (About, Work, Tools, Blog, Now) around a data-first pattern: content lives in dedicated src/data/*.js modules and flows through small src/lib/* helpers into presentation components, so nothing is hardcoded twice or drifts out of sync. Then, wherever a static mock would have been the easier road, built the real thing instead — a live GitHub contributions API in place of a pre-baked image, a Groq-hosted LLM for résumé tailoring in place of canned text, a Google Apps Script backend in place of a contact form that goes nowhere.

Architecture

How it fits together

Next.js 16 App Router

UI, routing & layouts

Data-first content layer

src/data/*.js → src/lib/* helpers

Server route handlers

AI resume tailoring & text-enhance

External services

Groq · Google Apps Script · GitHub

Also integrates withGroq LLM APIGoogle Apps Script (Sheets + email)GitHub contributions APIIP geolocationVercel

Result

Where it landed

A production site — this one — spanning 8+ routes, a 30+ utility tools hub, and a full case-study framework applied to every project including itself, with interactive systems (sound, tilt, custom cursor, scroll-linked animation) tuned for restraint over gimmick. Shipped and iterated on continuously since mid-July 2026.

  • Live GitHub contribution heatmap — a self-built tile grid (not a screenshot) matching GitHub's real color scale, with per-day hover tooltips, sourced from a public contributions API.
  • AI résumé tailoring — a Groq-hosted LLM, called from a server-side Next.js route, rewrites and reprioritizes résumé content against a pasted job description under strict "never invent facts" guardrails.
  • Multi-template résumé builder — live HTML preview, PDF export via @react-pdf/renderer, and client-side PDF text extraction (pdfjs-dist) so an existing résumé can be re-tailored, not just retyped.
  • Tools directory of 30+ utilities with a dependency-free, typo-tolerant fuzzy search and a multi-select tag filter.
  • This case-study framework — reusable Problem / Approach / Architecture / Result blocks with an animated request-flow diagram generated from each project's real stack.
  • Contact pipeline with zero third-party form service — posts to a Google Apps Script Web App that appends a row to a Sheet, e-mails a notification, and enriches each submission with IP geolocation plus UTM/device metadata.
  • Form primitives built from scratch — a spring-animated text-caret input, a searchable country-code phone field, and an autogrow textarea, none pulled from a UI kit.
  • A site-wide sensory layer — cursor-follow card tilt, a Web Audio interaction-sound system, and a universal press animation, wired through one shared pattern instead of per-component code.
  • WebGL ambient effects (an interactive orb, light rays) and a custom animated scrollbar, kept deliberately subtle so they support the content instead of competing with it.
  • SEO done properly — per-page metadata, generated OpenGraph images, JSON-LD Person/WebSite structured data, a sitemap, and an RSS feed for the blog.
  • Self-instrumented analytics — a lightweight visitor tracker (device, locale, referrer, engagement) writing to the same Sheets backend, with no third-party analytics script.

Stack

Built with

Next.js 16React 19Tailwind CSS v4MotionRadix UIGroq LLM API@react-pdf/rendererGoogle Apps ScriptVercel

Have something similar to build?

Legacy systems, compliance-heavy workflows, or a product that just needs to feel modern — that's the kind of work I like.