Released12 changes

Version 0.2.0

The site scaffolds. /root becomes a real Astro-rendered surface — no longer just markdown files in a repo. Landing page, brand identity commitment, and the framework decision everything downstream depends on.

Site scaffold

  • Astro + Tailwind 4 stackpure Astro (no Starlight), Tailwind 4 via @tailwindcss/vite plugin, CSS-native @theme config in src/styles/base.css. Dark theme with gradient accents (purple → pink → orange).
  • BaseLayouttop-level shell with Header + Footer + main slot; dark/light theme toggle via data-theme attribute.
  • Headernav with /root wordmark and primary nav items.
  • Footerbrand + nav + external links.
  • Landing page(src/pages/index.astro) — Enchanté-pattern hero: gradient blob background, "The bet" section (patterns vs tools).
  • Content collections config(src/content.config.ts) — schema for the docs collection (title, description, tags, status, category).

Brand + decisions

  • ADR-0002(adrs/0002-curriculum-site-v0-framework-and-stack.md) — framework + deployment + domain + Slack + releases-as-pages decisions.
  • Brand identity update(src/content/docs/brand/identity.md) — visual identity v0 commitment: JetBrains Mono wordmark, dark theme, gradient accent family, deploy target, Slack workspace decision.

Notes

  • Site scope for v0.2.0 = landing page only.The docs system (sidebar, search, breadcrumbs, dynamic routing) was originally planned for v0.2.0 but deferred to v0.3.0 to ship the hero cleanly first.
  • Framework choice recorded in ADR-0002.Pure Astro chosen over Starlight to control the design vocabulary directly (Enchanté-style dark theme) rather than fit into Starlight's default surface.
  • Tailwind 4 migration mid-cycle.Initially scaffolded with JS-based tailwind.config.mjs + @astrojs/tailwind; migrated to CSS-native @theme config via @tailwindcss/vite. tailwind.config.mjs removed.
  • Additional v0.2.0-planned itemsSlack workspace, Cloudflare Pages deployment, and the repo-flip-to-public are external actions tracked separately; their status isn't captured here.