|
| 1 | +# CLAUDE.md |
| 2 | + |
| 3 | +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. |
| 4 | + |
| 5 | +## Project Overview |
| 6 | + |
| 7 | +This is a Sanity Studio instance for Eventua11y, managing content for the eventua11y.com website. It's a headless CMS built with Sanity v3 that handles accessibility-focused event data. |
| 8 | + |
| 9 | +## Common Commands |
| 10 | + |
| 11 | +### Development |
| 12 | +- `npm run dev` - Start development server |
| 13 | +- `npm run start` - Start production server |
| 14 | +- `npm run build` - Build the studio |
| 15 | +- `npm run deploy` - Deploy to Sanity hosting |
| 16 | +- `npm run deploy-graphql` - Deploy GraphQL schema |
| 17 | + |
| 18 | +### Code Quality |
| 19 | +- Prettier is configured with: semi: false, printWidth: 100, bracketSpacing: false, singleQuote: true |
| 20 | +- ESLint uses @sanity/eslint-config-studio v5.0.2 |
| 21 | + |
| 22 | +## Architecture |
| 23 | + |
| 24 | +### Multi-Environment Setup |
| 25 | +The studio is configured for two environments in `sanity.config.js`: |
| 26 | +- **Production** (`/production`): dataset 'production', project ID '2g5zqxo3' |
| 27 | +- **Development** (`/test`): dataset 'test', project ID '2g5zqxo3' |
| 28 | + |
| 29 | +### Schema Structure |
| 30 | +Content types are defined in `/schemas/` and exported via `/schemas/index.js`: |
| 31 | +- `event` - Core event schema with complex conditional fields |
| 32 | +- `course` - Course/training content |
| 33 | +- `provider` - Event providers/organizers |
| 34 | +- `person` - Speaker profiles |
| 35 | +- `collection` - Event collections |
| 36 | +- `book` - Resource books |
| 37 | + |
| 38 | +### Key Plugins |
| 39 | +- `@sanity/cross-dataset-duplicator` - Event duplication between environments |
| 40 | +- `sanity-plugin-country-state-select` - Location selection |
| 41 | +- `sanity-plugin-recurring-dates` - Recurring event dates |
| 42 | +- `@sanity/vision` - GROQ query testing |
| 43 | +- `@sanity/google-maps-input` - Geographic data entry |
| 44 | + |
| 45 | +### Event Schema Complexity |
| 46 | +The event schema (`/schemas/event.js`) has sophisticated conditional logic: |
| 47 | +- Parent/child event relationships |
| 48 | +- Conditional field visibility based on event type |
| 49 | +- Theme vs normal event types |
| 50 | +- Attendance mode affects location field visibility |
| 51 | +- Call for speakers with closing dates |
| 52 | +- Scheduled vs unscheduled events |
| 53 | + |
| 54 | +### Content Relationships |
| 55 | +- Events can reference speakers (person type) |
| 56 | +- Events can have parent-child relationships |
| 57 | +- Cross-dataset duplication for events between environments |
0 commit comments