← Portfolio
2026 Live

felixdiez.es

The site you're reading — built to be edited from my phone.

Solo build — design, code & content model.

A content-driven personal site built with Astro and deliberately no UI framework. Everything you see is hand-rolled components and vanilla CSS; the content — career, bookshelf, knowledge notes, blog — lives in typed content collections and a single editable data file, so I can update it from Claude Code on my phone and let a file watcher rebuild on save.

  • Astro
  • TypeScript
  • Content Collections
  • RSS
  • Career timeline, skills graph, bookshelf and blog — all generated from typed content collections.

  • A single site.ts content model drives the home page, the career section and this portfolio.

  • CSS-only scroll-reveal animations, light/dark theme and an RSS feed — no JS framework shipped.

  • A small knowledge graph: tech pills resolve to a skills registry and link to where each was used.

The choices I made, and what they cost.

  1. Astro with zero UI framework

    Decision

    Plain Astro components and vanilla CSS — no React, Vue or Svelte on the page.

    Why

    A content site should ship as little JavaScript as possible. Static HTML with a sprinkle of CSS animation is faster, simpler and ages better.

    Trade-off

    I hand-write the few interactions I need (theme toggle, scroll reveals) instead of reaching for a component library.

  2. Content as data, editable from mobile

    Decision

    Editorial content lives in Markdown content collections and one site.ts file, edited via Claude Code on the VPS with a watcher that rebuilds on save.

    Why

    The whole site is operated from my phone — the content model has to be plain text an agent can safely edit.

  3. A build-time knowledge graph

    Decision

    Skills and technologies are a typed registry; experiences and projects reference them by slug, and backlinks are computed at build time.

    Why

    One source of truth for "what I know" that both the skills page and every detail page link into — no copy-paste, no drift.

This site is my playground for doing things properly on something low-stakes: a clean content model, no framework I don't need, and an editing workflow I actually enjoy. The infrastructure side — how it's served — is a story for its own post, coming soon.