Omar Chenine
Rank 10WebArchive

This portfolio

The site you are reading, built with the same rules as the case studies.

A typed Next.js portfolio with MDX, a skills matrix, a 3D project map, demos, and a performance budget.

Role
Design and build
Year
Pending
Case study
430 words
Demo
Not available
TypeScriptJavaScriptReactNext.jsTailwindFramer MotionReact Three Fiber

Result: a typed Next.js portfolio with MDX content, a skills matrix, a 3D project map, and client side demos. Lighthouse and bundle numbers are add the deployed audit.

Problem

Most portfolios list skills without proof. This site enforces the opposite: every skill resolves to a project, every missing metric is visible, and every demo carries an accuracy note.

Data

The content is JSON for structured facts and MDX for case studies and posts. The skills file, project file, and MDX files are checked by a validation script. The resume PDF is generated from a single JSON file.

Approach and why

  • Next.js App Router with Server Components by default.
  • TypeScript strict with noUncheckedIndexedAccess.
  • Tailwind with tokens in CSS variables.
  • Framer Motion for state transitions under 400 ms.
  • React Three Fiber loaded only after a user action.
  • Client side demos so there is no model API key and no per request cost.
  • Vitest and Testing Library for the matrix, filters, and utilities.
  • Metadata, canonical URLs, sitemap, robots, JSON-LD, and per project OG images.

The 3D map is optional because the static map already works. The demos are honest because the math is local and the accuracy note is visible.

Results

CheckValueNotes
Lighthouseadd deployed auditTarget 95 or higher
Initial JSadd measured bundleTarget 180 KB or less
3D JS before interaction0 KBLoads on activation
Components under 150 linesYesChecked by script
Skills with project proof32 of 32Checked by script

Evaluation

  • Content integrity: every skill maps to a project. Unconfirmed tools are excluded.
  • Honesty: missing metrics render as pending, not as numbers.
  • Accessibility: keyboard filters, focus states, reduced motion, and a text fallback for 3D.
  • Performance: no hero raster, self hosted fonts, lazy 3D, lazy Mermaid.
  • Reproducibility: pinned dependencies and a single check command.

A reviewer should challenge any performance claim without a deployed audit. That is why the Lighthouse row is pending.

Limitations

The public URL is pending. The content still has missing facts, which are tracked in MISSING_FACTS.md. The 3D scene is intentionally small and is not a data visualization.

Next steps

Deploy to Vercel, run Lighthouse and axe on the deployed URL, fill the missing facts, and add screenshots to the demos.

Links

  • Repo: add repository URL
  • Live site: add Vercel URL

Headline metrics

Lighthouse
Perf 93, a11y 100, best-practices 100, SEO 100
Initial JS
139 kB

Case study length

430 / 500