Production-ready Next.js 15 portfolio focused on real engineering work: OCR systems, automation pipelines, local-first tooling, and frontend craftsmanship.
- Framework: Next.js 15 (App Router)
- Language: TypeScript (strict)
- Styling: CSS variables + component-level inline styles
- Animation: Framer Motion with
LazyMotion - Theme:
next-themes - Assistant: Vercel AI SDK + Groq (
/assistant,/api/chat,/api/health)
Project pages are now aligned with source repositories and should not contain speculative claims.
- Zuban page reflects the current
devhms/Zubanrepository direction (offline STT / Handy-based architecture). - B.L.A.S.T. page reflects the current
devhms/OCRrepository direction (OCR pipeline with A.N.T. layering). - If a project pivots, update both page copy and
lib/projects.tstogether.
- Security headers are set in
middleware.ts(nosniff,DENY, referrer policy, permissions policy, CORP). - Canonical URL, robots directives, OpenGraph/Twitter metadata, and keywords are in
lib/metadata.ts. app/robots.tsandapp/sitemap.tsprovide crawler-ready defaults.
Prerequisites:
- Node.js 18+
- npm
Commands:
npm install
npm run dev
npm run lint
npm run typecheck
npm run buildAssistant env vars (.env.local for dev):
GROQ_API_KEY=your_key_here
GROQ_MODEL=llama-3.3-70b-versatileWhen updating portfolio content:
- Validate claims against the linked repo README and recent commits.
- Keep project list (
lib/projects.ts) and project page content in sync. - Re-run lint, typecheck, and build before shipping.
MIT (c) Ibrahim Salman