Next.js 16 portfolio site (App Router, React 19, Tailwind CSS 3, Three.js). Single service, no database or external dependencies needed.
pnpm dev
Runs on port 2424. See package.json scripts for all available commands.
pnpm lint-- ESLint (requireseslint.config.mjsflat config for ESLint 9)pnpm typecheck-- TypeScript (tsc --noEmit)pnpm precommit-- runs both lint and typecheck
- The global accent color uses CSS custom property
--root-color. It is resolved server-side inapp/layout.tsxfromroot_colorcookie fallback to#ff0000, proposal pages can provide a per-page default viathemeColorfrontmatter (applied inapp/proposals/[slug]/layout.tsx), andAppProviderpersists user overrides back to the cookie. pnpm buildhas a pre-existing failure on/_global-errorpage (useContextnull reference). The dev server works fine despite this.- ESLint 9 requires flat config format. The repo uses
.eslintrc.json(legacy) alongsideeslint.config.mjs(flat config bridge). The flat config file imports fromeslint-config-next/core-web-vitalsdirectly. - Proposal detail pages (
/proposals/[slug]) hide the site Header, Footer, and top padding via pathname checks inNavWrapper,Footer, andLayoutInner.