Commit graph

4 commits

Author SHA1 Message Date
87182583f8 Wire home page content into Sanity CMS with hardcoded fallbacks
Adds homePage singleton document type (hero headline/mission, video section,
CTA cards, sponsors). Home page fetches from Sanity when configured and
falls back to the existing hardcoded values when not.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 13:19:45 +00:00
847952228f Set studio basePath to /studio so assets resolve correctly
Without basePath the built studio references /static/*.js from the domain
root, but files live at /studio/static/*.js causing a blank page.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 12:50:52 +00:00
9ca50a1da8 Add Sanity Studio served at /studio via Docker multi-stage build
Builds studio/ separately during Docker build and copies output to
public/studio/ so it is served as static files by the Astro Node adapter.
Catch-all route redirects deep studio links back to /studio for SPA routing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 12:18:00 +00:00
fc644510af Add Sanity CMS integration
- Install @sanity/client + @portabletext/to-html
- studio/ — Sanity v3 project with post schema (title, slug, date, category,
  summary, cover image with hotspot, Portable Text body). Run with
  `cd studio && npm install && sanity dev` after setting SANITY_STUDIO_PROJECT_ID.
- src/lib/sanity.ts — typed client, GROQ queries, Portable Text → HTML conversion
- src/lib/news.ts — adds getArticles() / getArticle() async functions that prefer
  Sanity when SANITY_PROJECT_ID is set; fall back to local markdown otherwise
- events/index.astro, events/[slug].astro, events/page/[page].astro — switch to
  async getArticles()/getArticle(); [slug].astro drops getStaticPaths() in favour
  of SSR request-time fetch with redirect-on-not-found
- .env.example — documents SANITY_PROJECT_ID / SANITY_DATASET / SANITY_API_TOKEN

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 11:50:35 +00:00