Skip to content

../projects

tbssnch.dev

This site. A portfolio where the terminal is the entire UI — full-viewport on touch, a bounded desktop-app-style window on a mouse — built so that turning JavaScript off leaves a complete, semantic site behind rather than a blank page.

Every route exists twice. Each one server-renders a real baseline page — heading structure, prose, links, the resume PDF — that stands on its own with no JavaScript. The terminal is a progressive enhancement layered over that same content: one virtual filesystem, one route map, so cd and cat walk the actual site. The two trees are kept in sync by construction, not by hand.

The ask command is a public, streaming Q&A grounded in the site's own content: a system prompt assembled from the pages, a reply streamed token by token from the Claude API, a per-instance rate limit, and length guards on both the client and the server. With no API key configured the endpoint returns 503 and the command degrades to a plain "offline" message instead of erroring.

Color is a single source of truth: tokens.ts holds the semantic palette, tokens.css mirrors the same values as custom properties, and a test in the suite recomputes WCAG contrast from the token values and fails the build on any drift below 5.5:1 — a floor set deliberately above AA.

The motion budget is exactly two animations site-wide: the terminal caret blink and a one-time identity reveal on the home screen. Both are dropped entirely under prefers-reduced-motion, and the animation library they depend on is lazy-loaded, so every route that doesn't animate ships none of it.

Under the terminal is a headless engine — parser, command registry, buffer model, session — with no React, no DOM, and no framework imports. A purity test enforces that boundary and fails if a framework import leaks in, which keeps the engine unit-testable on its own.

Built with Claude Code. You're reading the server-rendered baseline of this page right now; the terminal prints the same text.

links

next.js · typescript · design-systems · anthropic-api