← BACK TO BLOGENTRY 05 / 08
DESIGN/10 MIN

A Brutalist Portfolio in Next.js 16 — Notes From the Build

The system behind this very site: zero rounded corners, monospace metadata, one accent color, and a generative flow-field background. Why constraints ship faster than design systems.

KS
Kusal Salpura
Full-Stack Developer & Software Engineer

A Brutalist Portfolio in Next.js 16

This site you are reading is the system I want to walk through. Not because it is unique — brutalist portfolios are everywhere in 2026 — but because the constraints I chose made the build three weeks faster than the previous version, which had a "proper" design system.

The constraints

These rules sound restrictive. In practice, they eliminated 90% of the design decisions that slow down a build. There is no "what radius should this card be?" debate. There is no "should we use a soft shadow or a hard one?" discussion. The answer is always: zero radius, no shadow, one border.

The color system

Two themes, light and dark. #f5f5f0 paper / #0a0a0a ink, with #ff4d1c as the accent in both. I deliberately picked an off-white instead of pure white — pure white at full screen brightness reads as "Apple Store", not "designer's site".

The muted foreground is #5a5a5a in light mode and #888888 in dark mode. Both are deliberately not pure grey — they have a touch of warmth so they feel like a printed page, not a terminal.

The generative background

Behind everything is a flow field rendered on a <canvas>. It updates with mouse position and respects prefers-reduced-motion. I will not pretend this is performance-neutral — it costs ~2ms per frame on a mid-range laptop — but it gives the site a sense of being alive without any images or video.

The lesson

The previous version of this portfolio had 14 Tailwind colors, three font weights per element, soft shadows on cards, and 4px radius on buttons. I shipped it in eight weeks. This version, with stricter constraints, shipped in three. Same content. Same person building it.

Constraints are not aesthetic. They are a delivery mechanism.