@@ -5,23 +5,27 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
55## Common Commands
66
77### Development
8+
89- ` npm run dev ` - Start development server with watch mode for formatting and linting
910- ` npm start ` - Start Astro development server only
1011- ` astro dev ` - Direct Astro development server (runs on port 4321)
1112- ` netlify dev ` - Run with Netlify edge functions (runs on port 8888)
1213
1314### Building and Deployment
15+
1416- ` npm run build ` - Run checks, build the site, and upload source maps to Sentry
1517- ` npm run preview ` - Preview the built site locally
1618- ` astro build ` - Build the site without additional steps
1719
1820### Code Quality
21+
1922- ` npm run check ` - Check code formatting with Prettier
2023- ` npm run format ` - Format code with Prettier
2124- ` npm run lint ` - Lint and auto-fix with ESLint
2225- ` npm run check:watch ` - Watch mode for formatting and linting
2326
2427### Testing
28+
2529- ` npm test ` or ` npx playwright test ` - Run all Playwright tests
2630- ` npm run test:ui ` or ` npx playwright test --ui ` - Run tests in interactive UI mode
2731- Tests run against ` http://localhost:8888 ` by default (Netlify dev server)
@@ -30,6 +34,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
3034## Architecture Overview
3135
3236### Technology Stack
37+
3338- ** Framework** : Astro 5.x with server-side rendering
3439- ** Frontend** : Vue 3 components with TypeScript
3540- ** UI Components** : Shoelace web components
@@ -41,45 +46,54 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
4146### Key Architecture Patterns
4247
4348#### Hybrid Rendering
49+
4450- Astro handles static rendering with selective client-side hydration
4551- Vue components are hydrated only when interactivity is needed
4652- Server adapter configured for Netlify deployment
4753
4854#### Data Flow
55+
4956- Events fetched from Sanity CMS via Netlify edge functions (` /api/get-events ` , ` /api/get-books ` )
5057- Client-side state management using Vue's reactive system
5158- Timezone conversion and localization handled by edge functions using Day.js
5259
5360#### Component Structure
61+
5462- ** Layout** : Single ` default.astro ` layout with theme switching and meta tags
5563- ** Pages** : Astro pages in ` src/pages/ ` (index, accessibility, curation-policy, past-events)
5664- ** Components** : Vue components for interactive elements (filtering, events display)
5765- ** Stores** : Vue reactive stores for filters and user preferences
5866
5967### State Management
68+
6069- ` filtersStore.ts ` : Event filtering, CFS status, attendance mode, cost filtering
6170- ` userStore.ts ` : User preferences (theme, timezone)
6271- Local storage persistence for user preferences
6372
6473### Styling Architecture
74+
6575- CSS custom properties for theming (light/dark modes)
6676- Utility-first approach with CSS utility classes
6777- Shoelace component theming
6878- Theme switching handled by inline script to prevent FOUC
6979
7080### Edge Functions
81+
7182Located in ` netlify/edge-functions/ ` :
83+
7284- ` get-events.ts ` : Fetches and processes events from Sanity
7385- ` get-books.ts ` : Fetches book releases
7486- ` get-user-info.ts ` : User location/timezone detection
7587
7688### Content Types
89+
7790- ** Events** : Regular accessibility events with CFS, attendance modes, costs
7891- ** Deadlines** : Call for speakers deadlines
7992- ** Awareness Days** : Accessibility awareness days/weeks
8093- ** Books** : Book releases related to accessibility
8194
8295### Testing Strategy
96+
8397- Comprehensive E2E testing with Playwright
8498- Accessibility testing integrated via @axe-core/playwright
8599- Tests cover filtering, theme switching, timezone selection, and core user flows
@@ -88,14 +102,17 @@ Located in `netlify/edge-functions/`:
88102## Development Notes
89103
90104### Environment Variables
105+
91106- ` SENTRY_AUTH_TOKEN ` : Required for source map uploads
92107- ` PLAYWRIGHT_TEST_BASE_URL ` : Override test target URL
93108
94109### Browser Support
110+
95111- Primary testing on Chromium
96112- Custom element support required for Shoelace components
97113
98114### Accessibility Requirements
115+
99116- All pages must conform to WCAG 2.2 Level AA
100117- Regular accessibility testing with automated and manual methods
101- - Skip link implementation and proper semantic markup
118+ - Skip link implementation and proper semantic markup
0 commit comments