Skip to content

feat: migrate docs-site from React+Vite SPA to Astro#34

Merged
TimBeyer merged 5 commits intomainfrom
feat/astro-docs-site
Mar 22, 2026
Merged

feat: migrate docs-site from React+Vite SPA to Astro#34
TimBeyer merged 5 commits intomainfrom
feat/astro-docs-site

Conversation

@TimBeyer
Copy link
Owner

Summary

  • Replace Vite+React SPA with Astro static site generation — all page content now renders as static HTML at build time for SEO
  • Split monolithic App.tsx into 16 Astro/React components; interactive parts (asciinema player, copy buttons) use React islands with client:visible hydration
  • Add SEO metadata (OG tags, Twitter cards, canonical URL, sitemap, robots.txt) and convert FadeIn from React hook to a ~300B web component

Details

Component Strategy
Nav, Hero, FleetDemo, Features, ConfigSection, FinalCTA, Footer, Divider, Terminal, JsonHighlight Astro component (static HTML, zero JS)
FadeIn <fade-in> web component (vanilla JS)
CopyButton, AsciinemaTerminal, DemoSequence React island (client:visible)
CreateDemo, ManagementDemo Astro component with build-time .cast detection

Tailwind CSS 4 unchanged (@tailwindcss/vite). GitHub Actions workflow unchanged.

Test plan

  • bun run build succeeds
  • dist/index.html contains all text content as static HTML (view source)
  • Visual parity with current site (preview locally)
  • Asciinema recordings play on scroll
  • Copy buttons work
  • FadeIn animations trigger on scroll
  • sitemap-index.xml and robots.txt present in dist

🤖 Generated with Claude Code

TimBeyer and others added 5 commits March 22, 2026 23:16
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace Vite+React SPA with Astro static site generation. All page
content now renders as static HTML at build time for SEO. Interactive
parts (asciinema player, copy buttons) use React islands with
client:visible hydration.

- Split monolithic App.tsx into 16 Astro/React components
- FadeIn converted from React hook to <fade-in> web component (~300B)
- CopyButton, AsciinemaTerminal, DemoSequence remain as React islands
- Build-time .cast detection replaces runtime HEAD fetch
- Add OG tags, Twitter cards, canonical URL, sitemap, robots.txt
- Move asciinema-player CSS to global.css to avoid FOUC
- Tailwind CSS 4 via @tailwindcss/vite plugin (unchanged)
- GitHub Actions workflow unchanged (same build cmd + dist/ path)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@TimBeyer TimBeyer merged commit ad3df59 into main Mar 22, 2026
4 checks passed
@TimBeyer TimBeyer deleted the feat/astro-docs-site branch March 22, 2026 22:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant