Personal website for Carter Shades. Built with Astro.
npm install
npm run dev # http://localhost:4321
npm run build # output to ./dist
npm run preview # preview the production build locally.
├── public/
│ └── CNAME # GitHub Pages custom domain
├── src/
│ ├── components/ # Header, Footer, Nav — shared across pages
│ ├── layouts/
│ │ └── BaseLayout.astro # the single layout every page wraps in
│ ├── pages/ # one file per route (index, work, writing, about)
│ ├── config/
│ │ └── site.ts # site metadata + nav links (single source of truth)
│ ├── content/
│ │ └── writing/ # markdown posts (empty for now)
│ └── content.config.ts # content collections schema
├── astro.config.mjs
├── tsconfig.json
└── CLAUDE.md # navigation guide for AI agents
- Create
src/pages/<slug>.astroand wrap content in<BaseLayout title="…">. - Add an entry to
navLinksin src/config/site.ts.
Drop a markdown file into src/content/writing/ with frontmatter:
---
title: "Post title"
pubDate: 2026-01-01
description: "Optional summary"
---The schema is defined in src/content.config.ts.
Static build deployed via GitHub Pages. The public/CNAME file binds the
deployed site to www.cartershades.com.