← back

byanth.io

active

This site. A minimal personal site and home for vibe-coded projects.

webnextjsmeta

This site exists to have somewhere to point people and somewhere to collect the things I'm building.

Stack

- Next.js 16 (App Router) + TypeScript - Tailwind CSS — dark theme, neutral palette, Geist font - Static data in TypeScript — no CMS, no database, no headless anything - Deployed on Vercel

Projects

Each project I'm working on gets a page here. The structure is intentionally loose — a page can be a project log, a demo embed, a writeup, or just a description. The slug-based routing (`/[slug]`) supports all of these without committing to a format.

Projects are defined as TypeScript objects in `src/content/vibe/index.ts`. Adding a new one is four lines of data.

Built with

Claude Code, a plan, and about an hour.

session updates

2026-03-12workspace setup

Built out the full project catalog from the initial Next.js scaffold. Added slug-based routing (/[slug]), project pages with content rendering and tag display, Nav and Footer components, and Tailwind dark theme cleanup. Defined the VibeProject and SessionUpdate TypeScript interfaces in src/content/vibe/index.ts. Added a SessionUpdates component to project pages — renders session log entries in reverse chronological order below project content, date in font-mono, divider-separated. Also set up the mise context framework: PROJECT-CONTEXT.md, .mise/rules.md, CLAUDE.md. Verified build. Created the GitHub remote (AnthonyM/byanth.io) and pushed.

2026-03-12styling refresh

Redesigned the visual identity from the original heavy dark zinc palette to a clean light/airy aesthetic, and introduced a styled "byAnth.io" wordmark. The color swap touched every component: bg-zinc-900 became bg-white, all dark zinc grays inverted to their light equivalents — zinc-100 borders, zinc-50 hover surfaces. The hierarchy settled on zinc-900 primary, zinc-500 secondary, zinc-400 muted; zinc-400 reads as comfortably muted on light but zinc-600 was too heavy. Tag pills moved from bg-zinc-800 to bg-zinc-100, which reads as a gentle label rather than a dark chip. The active status color changed from text-zinc-400 (which made active projects look as inert as archived ones) to text-emerald-600 — on a light background the green reads as genuinely alive without being garish. Amber-500 for wip was kept; it works just as well on light. The wordmark redesign replaced the monospace "byanth.io" with a mixed-weight Geist Sans treatment: font-light "by" in zinc-400, font-semibold "Anth" in zinc-900, font-light ".io" in zinc-400. Using Geist Sans instead of Geist Mono differentiates the logo from the body typography. The hover state subtly desaturates the Anth portion rather than brightening it, which felt more refined on a light background than a stark white flash. The split into three span elements with individual weight and color assignments gives independent control over each part of the wordmark without adding component complexity.