Astro-powered personal site for technical writing, projects, tools, education resources, poetry, and astrophotography.
Live deployment is served via GitHub Pages.
- Astro 5
- Astro Content Collections (Markdown/MDX)
- GitHub Actions + GitHub Pages 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 to
masterto 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
- Primary branch:
master - Deployment target: GitHub Pages
- Build output: static files in
dist/
If deployment fails, check the GitHub Actions workflow logs in the repository Actions tab.
Custom domain DNS is managed outside this repo (Squarespace DNS host), while site hosting is GitHub Pages.
.
├── public/
├── src/
│ ├── components/
│ ├── content/
│ ├── layouts/
│ ├── pages/
│ └── utils/
├── astro.config.mjs
├── package.json
└── README.md