Minimal, product-oriented portfolio built with Next.js App Router and TypeScript.
- Product-first, not visual-first
- Minimal/brutalist visual language
- Content-driven architecture (JSON as source of content)
- Gravity UI as base UI kit with restrained customization
- Next.js 16.2.1
- React 19
- TypeScript 5
@gravity-ui/uikit- CSS Modules
- Jest + Testing Library
/— homepage/work— case listing/work/[slug]— case detail/contact,/cv,/privacy,/terms/admin— custom CMS/perf-test— runtime/performance diagnostics
- Home content:
src/content/home.json - Cases:
src/content/cases/*.json - Case loading/types:
src/content/cases.ts
Current case slugs:
travel-booking-platformrailway-booking-flowmegamodmy-perfect-greek-vacationdesign-system-runtime
Custom GitHub-backed CMS on /admin:
GET /api/casesGET /api/cases/[slug]POST /api/save-contentPOST /api/upload-image
Required env vars:
GITHUB_PATGITHUB_REPOCMS_ADMIN_USERCMS_ADMIN_PASSWORD
npm run dev
npm run build
npm run test
npm run lintUse only .codex/* for project status and phase tracking:
.codex/SNAPSHOT.md.codex/PHASES.md.codex/blocks/*.md
.assistant/* is legacy and kept for compatibility only.