Skip to content

v0.3.0 — Astro 5 Migration

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 15 Apr 02:47

Major migration from single-file HTML (1916 lines, 200KB) to Astro 5 static site.

What changed

  • Data-driven content — all projects live in `src/data/projects.ts`. Edit one file, rebuild, deploy.
  • Build-time GitHub API — star counts baked into the static HTML via `scripts/fetch-stars.mjs`. No runtime rate limits for visitors.
  • Componentized — FeaturedCard, LiveCard, CatalogEntry, SkillCard, Divider.
  • Auto-computed counts — category filter badges, `statLive`, and total counts now derive from the data array. No more hardcoded drift.
  • CI/CD — GitHub Actions builds + deploys on every push to main, with a daily cron refreshing star counts.
  • Preserved — `legacy.html` committed as full backup of the pre-migration single-file site.

Under the hood

  • Astro 5 + TypeScript + lightningcss
  • Sitemap auto-generated
  • Service worker cache bumped to `portfolio-v3`
  • Output: 147 KB compressed HTML (was 206 KB)
  • Build: ~540 ms cold

Gotchas fixed

  • "Catalog entries are hardcoded HTML" → mapped from data array
  • "Category filter counts are hardcoded — must update manually" → auto-derived
  • "statLive count is hardcoded in hero" → `{liveApps.length}`

See CHANGELOG.md for full history.