← Web Projects

charlieramus.comv2

May 2026 — Present

charlieramus.comv2 screenshot

Project Overview

Role
Solo — design + build
Timeline
May 2026 — Present
Stack
Next.jsTypeScriptTailwindMDX
Status
In progress

What I worked on

A clean-slate rebuild of my portfolio in Next.js, TypeScript, and Tailwind. Nearly everything editable collapses into one file, site.config.ts — the content model that drives every page. Writing lives as MDX, the photography is a masonry grid backed by a fullscreen lightbox, and a decorative flower system runs across the surfaces, motion-safe under prefers-reduced-motion.

The Challenge

Collapsing every editable value into a single config file — so the copy can be changed without touching JSX — while keeping the design-system character intact and the masonry grid and lightbox correct across sizes.

The process

  1. Design system from the mockup

    Ported the palette, type, and radii into Tailwind v4 @theme tokens.

  2. Content model in site.config.ts

    Folded every editable value into one typed file, no JSX to chase.

  3. Inner pages

    About, writing, design, gear, web projects — each reading its copy from config.

  4. Photography pipeline

    Masonry grid backed by a fullscreen lightbox, fed by the synced gallery.

  5. Case-study pages

    The screenshot-forward /web-projects/[slug] template, authored per project.

  6. Polish

    The decorative flower system and the motion-safe finishing pass.

charlieramus.comv2 — image 1
charlieramus.comv2 — image 2
charlieramus.comv2 — screenshot
charlieramus.comv2 — image 3
charlieramus.comv2 — image 4

This site is its own case study. It's a clean-slate rebuild in Next.js, TypeScript, and Tailwind, meant to fully replace the old charlieramus.com — and the organizing idea was to make it editable by a person, not a codebase. Almost every string, list, and image path lives in one file, site.config.ts, behind // CUSTOMIZE markers, so the copy can change without anyone opening a component.

A portfolio is not proof of what you built. It is proof you noticed.

The writing runs on MDX, so an essay is just a file. The photography is a masonry grid backed by a fullscreen lightbox, and a decorative flower system threads through the surfaces — all of it motion-safe, removed or frozen under prefers-reduced-motion. The constraint I kept returning to was character: one config file is easy; one config file that still feels designed is the actual work.

The case-study pages you're reading are part of that same system — every section is data in site.config.ts, rendered by one template. Swap a placeholder, edit a paragraph, run the build, and it's live.

charlieramus.comv2 — wide screenshot
charlieramus.comv2 — banner

One file to edit, a whole site to show for it.