This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
npm run dev # Start development server
npm run build # Production build
npm run lint # ESLint via Next.jsNo test suite is configured.
Next.js 15 App Router portfolio with a Spotify-inspired dark theme. All routes live under src/app/.
- Home page split:
page.tsxis a server component that rendersHomeClient.tsx, which holds the main CSS grid dashboard and all client-side state/animations. - Dashboard grid: 6-column × 8-row CSS grid on desktop, flex column on mobile. Each section is lazy-loaded via
React.lazy+Suspense. - Section components live in
src/app/components/sections/— each renders one grid cell. - Blog system: Markdown files in
src/content/blog/processed bysrc/lib/blog.tsusinggray-matter+remark. Posts withhidden: truein frontmatter are excluded from listings but accessible by direct URL. - Data files:
data/experience.tsanddata/projects.tsare static TypeScript arrays — the single source of truth for portfolio content.
@/* maps to the repo root (not src/). So @/data/projects resolves to ./data/projects.ts.
- Tailwind with custom Spotify theme colors:
spotify.green(#1DB954),spotify.black,spotify.white,spotify.grey - CSS custom properties are generated from the Tailwind config via a custom plugin in
tailwind.config.ts - Blog post HTML gets custom Spotify-themed inline styles applied in
src/lib/blog.ts
next.config.mjssetsoutput: "standalone"for Docker deployment- Remote images are served from CloudFront CDN and jsDelivr — new image domains must be added to
remotePatternsinnext.config.mjs - Vercel Analytics and Speed Insights are wired in
src/app/layout.tsx