Skip to content

ARTICLE // NEXT.JS

Architecting a 100/100 Lighthouse Monochrome Portfolio & Headless CMS

Engineering an editorial, typography-first developer portfolio with ISR, keyboard-first navigation, and strict design token separation.

December 10, 2024
2 min read
Next.js, TypeScript, Performance, Design Systems, MongoDB

Many modern engineering portfolios suffer from bloated client bundles, distracting 3D animations, and poor accessibility scores that obscure real engineering work.

When building manishj.dev, the objective was uncompromising: create an editorial, brutalist monochrome developer portfolio with 100/100 Lighthouse scores, complete keyboard accessibility (⌘K), and a headless management layer.

01 // SECTION01. Token-Driven Strict Monochrome Design System

Rather than relying on ad-hoc Tailwind classes, the entire design system is driven by semantic CSS custom properties:

CSS
:root {
  --color-bg: #09090b;
  --color-surface: #121215;
  --color-card: #141418;
  --color-border: rgba(255, 255, 255, 0.08);
  --color-border-strong: rgba(255, 255, 255, 0.18);
  --color-text: #f4f4f5;
  --color-text-secondary: #a1a1aa;
  --color-text-muted: #71717a;
}

This guarantees perfect contrast ratios across light and dark modes while enforcing visual discipline throughout all UI layers.

02 // SECTION02. Data Contract Isolation (DB to UI Mappers)

We strictly decoupled MongoDB documents from UI React component contracts through functional mapper functions:

TS
// lib/content/mappers.ts
export function toProjectRowProps(doc: ProjectDbDoc): ProjectRowData {
  return {
    title: doc.title,
    slug: doc.slug,
    kicker: doc.kicker || 'PROJECT',
    year: doc.year || '2024',
    role: doc.role || 'Software Engineer',
    description: doc.description,
    image: doc.image,
    technologies: doc.technologies || [],
    liveUrl: doc.liveUrl,
    githubUrl: doc.githubUrl,
  };
}

If database schemas evolve or new fields are added, UI components remain completely unaffected.

03 // SECTION03. Performance Metrics

  • Performance: 100/100 (First Contentful Paint < 0.4s)
  • Accessibility: 100/100 (Full screen reader & keyboard support)
  • Best Practices: 100/100
  • SEO: 100/100 (Structured JSON-LD schemas for articles and case studies)
React Native
Next.js
TypeScript
Node.js
NestJS
PostgreSQL
Prisma
Redis
Docker
GraphQL
Tailwind CSS
MongoDB
Express
AWS
Socket.io
Expo
System Design
REST APIs
Git
React Native
Next.js
TypeScript
Node.js
NestJS
PostgreSQL
Prisma
Redis
Docker
GraphQL
Tailwind CSS
MongoDB
Express
AWS
Socket.io
Expo
System Design
REST APIs
Git