my personal website. blog, projects, that sort of thing.
built with Astro, cms Sanity, deployed on Vercel.
- astro 5, server mode, vercel adapter
- sanity cms for content
- tailwind css v4
- react for portable text rendering
- pagefind for search
npm install
npm run devyou'll need a .env file:
examplle
SANITY_PROJECT_ID=xxxxxxxx
SANITY_DATASET=productionthe sanity studio lives at /admin. to rebuild it:
npm run build:adminthis builds to public/admin/ and fixes the asset paths. the output is committed so vercel can serve it without rebuilding.
npm run buildruns type check then builds for vercel.
src/
├── assets/ # images
├── components/ # astro components + react (portable text)
├── layouts/ # layout
├── lib/ # sanity client, queries, utils
├── pages/ # routes
│ ├── blog/ # /blog, /blog/:slug
│ ├── projects/ # /projects, /projects/:slug
│ ├── tags/ # /tags, /tags/:tag
│ └── admin.astro # redirects to /admin/index.html
├── styles/ # global.css
└── consts.ts # site config
sanity/
├── schemas/ # sanity content types
├── config.ts
└── cli.ts