Skip to content
S
EN/ES
← Back to all projects
20261 min readOwner

This Site: sabado.dev

A bilingual personal blog and portfolio built with Astro, focused on performance, a great reading experience, and zero runtime JavaScript.

Orange-purple gradient with the sabado.dev wordmark

Problem

I wanted a personal site that practiced what I preach: static-first, fast under load, pleasant to read, and genuinely bilingual. Too many blogs ship megabytes of JavaScript for a handful of pages, and most personal sites treat i18n as an afterthought with awkward URL schemes.

Solution

  • Built everything with Astro in static output mode — every page is pre-rendered HTML, so there’s no runtime framework on the client. The only client-side JavaScript is small, targeted islands for search, theming, code copy, and lightbox galleries.
  • Implemented i18n as first-class: English and Spanish share a single content schema, are paired by date/order for the language switcher, and keep translated slugs so URLs read naturally in both languages (/blog/rest-to-grpc/es/blog/rest-a-grpc).
  • Added the features a good blog needs: reading time, a tags system with per-locale tag pages, an RSS feed per language, full-text search via Pagefind, and smooth view transitions between pages and posts.
  • Only use small inline-SVG icon instead of pulling in an icon dependency, keeping the bundle lean.

Result

  • Overwheelming Lighthouse scores with no client framework and no tracking scripts.
  • Content is authored once per language in Markdown and wired through a typed content collection, so adding a post or project is a single file.
  • Deployed straight to the VPS: a GitHub Actions workflow builds with Bun and rsyncs the static output behind the web server.