Personal site built with Astro 6 as a static site.
- Astro 6
- TypeScript
@astrojs/sitemap- Astro Fonts API for self-hosted Google fonts
astro:assetsfor optimized content images
There are currently no UI framework integrations or hydrated islands in the app. The site is mostly static HTML/CSS with one bundled client script for theme controls, scroll spy, reveal effects, copy-to-clipboard, and the starfield canvas.
- Node
^20.19.1 || >=22.12.0 - npm 9+
npm run dev- start local development servernpm run build- produce static output indist/npm run preview- preview production build locallynpm run check- run Astro and TypeScript checksnpm run format- format project filesnpm run format:check- verify formatting
src/pages/index.astrois the only page entrypoint.src/layouts/BaseLayout.astroowns metadata, JSON-LD, GTM, navigation, and the bundled site enhancement script.src/content/contains typed in-repo data modules for profile, family, career, and section navigation.src/assets/images/contains images that should be processed by Astro's asset pipeline.public/is reserved for passthrough assets that should keep stable URLs, such as favicons, verification files, social icons, and the hero background image.src/scripts/site-enhancements.tsis the only client-side script entrypoint and is bundled by Astro via?url.src/styles/global.csscontains the site-wide visual system and layout styling.
- Fonts are configured in
astro.config.mjswith the Astro Fonts API, so the site no longer depends on runtime requests tofonts.googleapis.com. - Content images are imported from
src/assets/imagesand rendered withastro:assets, which gives hashed URLs, dimensions, and optimized output during build. - The old unused Preact island code was removed during the Astro 6 upgrade. If interactivity is added later, prefer plain Astro or vanilla client scripts unless a framework dependency is clearly justified.
package.jsonincludesoverridesfor patchedrollupandsvgoversions to keep production audit results clean.
Before shipping changes, run:
npm run checknpm run buildnpm run preview
npm audit --omit=dev should be clean. A full npm audit may still report dev-only issues through editor and language-server tooling.