|
| 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 the Austin JavaScript meetup events presentation system. It's a React + TypeScript + Vite application that uses Reveal.js to create slide presentations for monthly meetup events. The slides are organized by month and include splash screens, agendas, and closing slides. |
| 8 | + |
| 9 | +## Commands |
| 10 | + |
| 11 | +### Development |
| 12 | +- `pnpm dev` - Start development server with hot reload |
| 13 | +- `pnpm build` - Build for production (runs TypeScript compiler + Vite build) |
| 14 | +- `pnpm lint` - Run ESLint to check code quality |
| 15 | +- `pnpm preview` - Preview the production build locally |
| 16 | + |
| 17 | +### Package Management |
| 18 | +Uses pnpm (version 10.6.3+) as the package manager. Always use `pnpm` commands instead of npm/yarn. |
| 19 | + |
| 20 | +## Architecture |
| 21 | + |
| 22 | +### Presentation System |
| 23 | +- Built on Reveal.js for creating slide presentations |
| 24 | +- Main app (`App.tsx`) initializes Reveal.js with plugins (Highlight, Notes) |
| 25 | +- Slides are React components imported and rendered within the Reveal.js deck |
| 26 | +- Uses ref-based integration to manage Reveal.js lifecycle |
| 27 | + |
| 28 | +### Slide Organization |
| 29 | +- **Splash slide** (`src/slides/splash.tsx`) - Welcome screen with Discord QR code, shirt promotion, and sponsors |
| 30 | +- **Monthly agenda slides** (`src/slides/agenda-YYYY-MM.tsx`) - Event agenda for specific months |
| 31 | +- **Thanks slide** (`src/slides/thanks.tsx`) - Closing slide |
| 32 | + |
| 33 | +### Key Components |
| 34 | +- **Sponsors component** (`src/components/Sponsors.tsx`) - Displays event sponsors |
| 35 | +- **QR Code integration** - Uses Shoelace's `SlQrCode` component for Discord and donation links |
| 36 | + |
| 37 | +### Styling |
| 38 | +- SCSS-based styling system in `src/styles/` |
| 39 | +- Custom theme for Reveal.js presentations |
| 40 | +- Responsive quadrant layout for splash screen |
| 41 | + |
| 42 | +## Adding New Monthly Events |
| 43 | + |
| 44 | +1. Create new agenda slide: `src/slides/agenda-YYYY-MM.tsx` |
| 45 | +2. Import and add to slide deck in `App.tsx` |
| 46 | +3. Follow existing pattern with emoji indicators for lightning talks (⚡️) and main talks (🎤) |
| 47 | + |
| 48 | +## Technology Stack |
| 49 | + |
| 50 | +- **React 19** with TypeScript |
| 51 | +- **Vite** for build tooling and development server |
| 52 | +- **Reveal.js** for presentation framework |
| 53 | +- **Shoelace** web components (specifically QR codes) |
| 54 | +- **SCSS** for styling |
| 55 | +- **ESLint** with TypeScript and React plugins |
| 56 | + |
| 57 | +## Development Notes |
| 58 | + |
| 59 | +- Uses React Strict Mode - Reveal.js initialization includes double-initialization prevention |
| 60 | +- Proper cleanup of Reveal.js instance in useEffect return function |
| 61 | +- TypeScript configured with separate app and node configurations |
| 62 | +- Hot module replacement enabled in development |
0 commit comments