A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
Personal portfolio built with Next.js 16 (App Router, RSC-first), React 19, TypeScript, and Tailwind v4. Features a stre
Single-page Next.js 16 portfolio deployed to Vercel Edge. RSC-first composition of ~18 sections with four client islands, a streaming LLM endpoint, a durable contact form, and a CI pipeline that enforces performance, accessibility, and bundle size as hard contracts.
Live: erikunha.dev
This is Erik Cunha's hiring artifact for Staff/Principal frontend and applied-AI roles. The codebase demonstrates the engineering it claims — a site that says "performance-first" but ships a 400 KB JS bundle is self-disqualifying. Every architectural decision is documented in ARCHITECTURE.md with trade-offs and reversibility notes.
The AI centerpiece is a streaming ask endpoint (Vercel AI Gateway + Anthropic Haiku 4.5, prompt-cached, rate-limited, budget-capped) with a correctness eval suite and a visible metrics panel — making AI quality observable to hiring reviewers. Agent-readiness surfaces include /.well-known/agent.json and a minimal MCP server.
| Technology | Purpose |
|---|---|
| Next.js 16 (App Router) | RSC-first static generation with selective client islands |
| React 19 | Server components + streaming hydration |
| TypeScript strict | noUncheckedIndexedAccess, exactOptionalPropertyTypes |
| Vercel AI Gateway + Anthropic Haiku 4.5 | Streaming /api/ask with prompt caching and cost tracking |
| Upstash Redis | Rate limiting, budget cap, KV interaction log |
| Tailwind v4 (via PostCSS) | Utility-first styling; design tokens authored in app/css/theme.css under @theme {}. No CSS Modules, no Style Dictionary, no build-time token pipeline |
Design system (/design-system) | 8 RSC primitives (Badge, Button, CmdLine, Field, KbdKey, StatTile, TerminalPanel, WindowChrome), @theme tokens, live docs route |
| Biome | Lint + format in a single Rust binary |
| Vitest + Playwright | Unit (80% line coverage gate) + E2E + axe-core a11y CI suite |
| Lighthouse CI | LCP, INP, CLS gated per PR |
| pnpm 10+ / Node 22+ | Strict dependency resolution, content-addressed store |
git clone git@github.com:erikunha/portfolio.git
cd portfolio
pnpm install
cp .env.example .env.local # fill in API keys
pnpm dev # http://localhost:3000
pnpm test # unit tests (vitest)
pnpm test:e2e # Playwright E2E + a11y
pnpm build # production build
The static page renders without environment variables. Runtime endpoints (/api/ask, /api/contact, /api/lighthouse) error until keys are set. See .env.example for the full variable list.
| Doc | What it covers |
|---|---|
ARCHITECTURE.md | System design, component deep-dives, trade-offs, what to revisit |
STANDARDS.md | Engineering bar — 11 domain chapters, each with an enforcement mechanism |
DECISIONS.md | Running ADR log — why decisions were made and how to reverse them |
CLAUDE.md | AI assistant instructions (auto-loaded by Claude Code each session) |
Source code: MIT. Content (copy, CV data, opinions, biographical material): all rights reserved. Forking to learn from the architecture is welcome; replacing my name with yours is not.
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
MCP server integration for DaVinci Resolve Studio
A Jetbrains IDE IntelliJ plugin aimed to provide coding agents the ability to leverage intelliJ's indexing of the codeba