Skip to content

NeelMaddu268/git-portfolio

Repository files navigation

neel maddu — git log portfolio

A personal portfolio rendered as a git log --graph commit history. Each career milestone is a commit on a branching rail; side pursuits (iOS Club, AlphaEvolve research) fork off main and merge back in. Built with Next.js (App Router) + TypeScript + Tailwind CSS + Framer Motion.

Run it

npm install
npm run dev      # http://localhost:3000
npm run build    # production build (deploys to Vercel with zero config)

Features

  • Commit graph — click any commit to expand its case study inline; hover to trace a branch; git checkout <hash> spotlights one era (Esc exits).
  • Command palette⌘K / Ctrl+K fuzzy-jumps to any project, skill, section, or link.
  • Résumé view — the toggle in the header flips to a plain, scannable one-page résumé (persisted for the session).
  • Light/dark themes, prefers-reduced-motion support, keyboard-navigable commits (Tab + Enter), single-rail mobile layout.

Adding a new commit

All content lives in lib/data.ts — the graph, command palette, and résumé view all render from it. To add a milestone:

  1. Add one object to the commits array (newest first). Give it a unique id, a believable 7-char hash, a conventional-commit type (feat / perf / merge / branch / …), lane: 0 for the main trunk (1 for a side branch), and the case-study body.
  2. Wire it into edges (child → parent). A plain edge draws a straight rail segment; adding viaLane: 1 routes it through the side lane, which is what draws a visible fork/merge curve.
  3. Move the refs: ["HEAD", "main"] decoration to the new newest commit.

That's it — the rail, animations, palette entries, and mobile layout all follow from the data.

Structure

lib/data.ts                  ← all content (commits, edges, skills, résumé)
components/
  PortfolioApp.tsx           ← state + shortcuts + layout shell
  BranchGraph.tsx            ← measured SVG rail behind the commit rows
  Commit.tsx                 ← one log row (node + header + accordion)
  CommitDetail.tsx           ← expanded case study
  CommandPalette.tsx         ← ⌘K fuzzy search overlay
  ResumeView.tsx             ← plain one-page résumé escape hatch
  AuthorBlock.tsx            ← "git config --list" identity panel
  LanguageBar.tsx            ← skills as a repo language bar
  ThemeToggle.tsx            ← light/dark switch

About

my portfolio, rendered as a git log

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages