Astro-powered personal site for technical writing, projects, tools, education resources, poetry, and astrophotography.
Live deployment is served as a static site.
- Astro 5
- Astro Content Collections (Markdown/MDX)
- CI-based static deployment
Content is managed in src/content/:
blogdocsprojectstoolseducationpoetryastrophotography
Collection schemas and validation live in src/content.config.ts.
Run all commands from repository root:
| Command | Action |
|---|---|
npm install |
Install dependencies |
npm run dev |
Start local dev server |
npm run build |
Build static site to dist/ |
npm run preview |
Preview production build locally |
- Add or edit content in the relevant
src/content/<collection>/directory. - Include frontmatter fields expected by the schema (for example:
title,description,pubDate,tags, optionalupdatedDate, optionalfeatured). - Run
npm run buildbefore pushing. - Push through the normal repository workflow to trigger deployment.
Tags are normalized to slug routes under /tags/<tag-slug>/.
The reusable shell component lives at:
src/components/CliShell.astro
It is used on:
/docs/projects/tools/notebook
Notes:
- Supports unix-style commands (
stat,ls,cd,grep,tag,man, etc.) - Supports per-command help via
--help/-h - Manual drawer includes keyboard navigation and clickable
SEE ALSO - Hidden on mobile breakpoints to keep index pages lightweight
- Deployment target: static hosting
- Build output: static files in
dist/
Deployment is handled by the repository's configured CI workflow.
This site tracks The Living Codex as a git submodule:
- Submodule path:
vendor/the-living-codex - Tracking branch:
main - Served route:
/living-codex/*(synced intopublic/living-codexat build time) - Deploy behavior: the build uses the checked-out submodule content when generating the static site.
An internal maintenance workflow can refresh the submodule and open an update PR when changes exist.
Run from repo root:
git submodule update --init --recursive
git submodule update --remote --merge vendor/the-living-codex
git add .gitmodules vendor/the-living-codex
git commit -m "chore(sync): bump Living Codex submodule"
git push origin HEADTo refresh the static payload locally:
npm run sync:living-codexCustom domain DNS is managed outside this repository.
.
├── public/
├── src/
│ ├── components/
│ ├── content/
│ ├── layouts/
│ ├── pages/
│ └── utils/
├── astro.config.mjs
├── package.json
└── README.md