Portfolio Evolution

Portfolio Evolution

Three iterations

Every portfolio I've built has taught me something different. v1 taught browser fundamentals without frameworks. v2 was a sprawling research playground that eventually became unmaintainable. v3 is the site you're reading now, built for modularity and long-term evolution.

  • v1: Vanilla HTML, CSS, and JavaScript with flip cards, glassmorphism, and touch-first galleries
  • v2: Terminal-inspired playground with hundreds of pages, Cloudflare Workers, and third-party API integrations
  • v3 (Current): Modular bento architecture with dynamic layout injection and zero framework dependencies
v1

v1: Learning Fundamentals

No frameworks

My first real project, built entirely from scratch with vanilla HTML, CSS, and JavaScript. No frameworks, just Reddit threads and Stack Overflow when I got stuck. I wanted to understand how the web actually works before abstracting it away.

  • CSS 3D transforms with perspective and backface-visibility created flip cards that reveal work history behind photos
  • Touch-first horizontal galleries with inertia scrolling, arrow navigation, and keyboard support
  • Intersection Observer API powered section reveal animations as users scrolled down the page
  • Mobile Safari handled backdrop-filter differently, requiring webkit prefixes and fallback backgrounds

The constraint of no frameworks forced me to learn fundamentals that still inform every project I build.

v2

v2: Terminal Playground

Sprawling experiments

A research playground with hundreds of pages, modules, and serverless APIs. I wanted to see how far I could push ideas when I focused on architecture over polish. The terminal metaphor gave permission to publish rough ideas that would have felt out of place in a polished portfolio.

  • Block-based UI framework with wizard navigation, Levenshtein fuzzy matching, and tab completion
  • Dozens of Cloudflare Workers powering real-time stock data, AI assistants, and media search
  • API integrations spanning Polygon.io, TMDB, Spotify, IGDB, Census Bureau, OpenAI, and Gemini
  • Scope creep was constant because every idea felt worth exploring, which taught me when to ship versus iterate

The sprawl eventually motivated v3, where I applied everything I learned with the discipline to ship a focused product.

v3

v3: Modular Architecture

The current site

A complete architectural rebuild focused on modularity, performance, and maintainability. Built with vanilla TypeScript and hosted on Cloudflare Workers. The bento grid draws from Linear and iOS Widgets, with self-contained cells that can evolve independently.

  • Each page only contains its own content while headers, navigation, and footers are injected automatically
  • No React, Vue, or Svelte means no node_modules bloat and nothing to break when libraries update
  • The bento grid took three complete rewrites before the sizing math worked across every breakpoint

Adding new pages is now trivial: one HTML file with content, no build configuration or shared state to update.