Personal portfolio site showcasing my best work.
Astro + React islands + TypeScript + Bun. Tailwind v4 with custom components and dark mode.
Sanity CMS for content management with Portable Text.
Physics simulation via Rapier2D, WebGL graphics, and Lottie animations.
bun i && bun devSanity Studio:
bun studio:devDeploy Studio:
bun studio:deployRequired environment variables:
SANITY_API_READ_TOKEN(site deployment; server-side draft reads)SANITY_STUDIO_PREVIEW_URL(studio deployment; defaults tohttps://chasecee.com)ISR_BYPASS_TOKEN(site; Vercel ISR bypass)REVALIDATE_SECRET(site; webhook Bearer secret)
Preview endpoints:
/api/draft-mode/enable/api/draft-mode/disable
Site uses Vercel ISR. On publish, Sanity Blueprints POSTs to /api/revalidate.
export REVALIDATE_SECRET=...
bun run blueprints:plan
bun run blueprints:deploySource of truth: root sanity.blueprint.ts. Smoke-test:
curl -i -X POST https://chasecee.com/api/revalidate \
-H "Authorization: Bearer $REVALIDATE_SECRET" \
-H 'Content-Type: application/json' \
-d '{"_type":"page","slug":{"current":"about"}}'Delivery logs: Sanity Manage → API → Webhooks.