feat(site): migrate from Next.js to Astro
Build and Deploy / deploy (push) Has been cancelled

Replace Next.js 16 + React 19 with Astro 5. Same visual design,
same deploy pipeline, zero client-side framework.

- All components rewritten as .astro files
- Dark mode via inline scripts (no React context)
- Timeline animation via IntersectionObserver script
- Nav active state computed at build time
- Self-hosted Source Code Pro woff2 fonts
- Drop Font Awesome (icons were never loaded)
- Drop unused headshot PNG (1MB, unreferenced)
- Fix pfSense hardware refs (Netgate 1100, not N100)
- Output: 212KB static HTML vs 2.6MB before
- JS shipped: ~700 bytes inline vs ~130KB React runtime
This commit is contained in:
2026-05-18 19:53:40 -04:00
parent d34f9f136c
commit 52a7c5b27c
48 changed files with 4967 additions and 6345 deletions
+4 -16
View File
@@ -4,27 +4,15 @@
"private": true,
"homepage": "https://www.lerko96.com",
"scripts": {
"dev": "next dev",
"build": "next build",
"postbuild": "node -e \"require('fs').writeFileSync('out/.nojekyll', '')\"",
"start": "next start",
"lint": "eslint",
"predeploy": "npm run build",
"deploy": "gh-pages -b master -d out -t"
"dev": "astro dev",
"build": "astro build",
"preview": "astro preview"
},
"dependencies": {
"next": "16.2.2",
"react": "19.2.4",
"react-dom": "19.2.4"
"astro": "^5"
},
"devDependencies": {
"gh-pages": "^6.0.0",
"@tailwindcss/postcss": "^4",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "16.2.2",
"tailwindcss": "^4",
"typescript": "^5"
}