ijsbreker/.claude/CLAUDE.md

80 lines
2.5 KiB
Markdown
Raw Permalink Normal View History

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Doel
Browser-based interactief workshop spel waarbij deelnemers fysiek kiezen tussen twee stellingen die op een beamer worden getoond. Volledig offline werkend, configureerbaar via JSON.
## Architectuur
**Simpel & Offline First:**
- Pure HTML/CSS/JavaScript (geen frameworks, geen build proces)
- Werkt door `index.html` direct te openen in browser
- Alle configuratie via `config.json` (inclusief kleuren, timing, stellingen)
**Kern Componenten:**
1. **config.json** - Single source of truth voor alle instellingen
- Timer duur, font grootte, kleuren, stellingen, button tekst
- Geladen via fetch API bij app start
2. **index.html** - Drie scherm states
- Statement screen (50/50 split met twee stellingen)
- Blank screen (met volgende knop)
- Finish screen (eindscherm)
3. **style.css** - Timer animatie via CSS
- 4 balkjes (top/right/bottom/left) animeren synchroon
- CSS custom properties voor dynamische timer duur
- Flexbox voor 50/50 split
4. **app.js** - State management en interactie
- Config laden en toepassen op DOM
- Screen state switching
- Web Audio API voor beep geluid
- Keyboard + click event handlers
## Flow
```
Start → Laad config → Toon stelling (timer start) →
Beep + blanco scherm → Knop/spatiebalk →
Volgende stelling → ... → Eindscherm
```
## Configuratie Aanpak
**Alles in config.json - niets hardcoded:**
- Kleuren: Hex codes voor links/rechts achtergrond
- Teksten: Button labels en finish tekst
- Timing: Timer duur in seconden
- Styling: Font grootte als CSS waarde
- Content: Array van stellingen (links/rechts paren)
CSS custom properties worden runtime gezet vanuit config via JavaScript.
## Interactie Pattern
Dual input voor "volgende":
- Click op button (beamer presentatie met muis)
- Spatiebalk (sneller tijdens presentatie)
Timer afloop triggert Web Audio API beep (800Hz sine wave, 300ms met fade out).
## Wijzigingen Maken
- Nieuwe features: Overweeg of het via config.json kan (behoud simpliciteit)
- Styling aanpassingen: Pas config opties aan waar mogelijk, geen hardcoded values
- Geluid wijzigen: Pas Web Audio parameters in `playBeep()` functie
- Extra scherm states: Volg bestaand pattern (hidden class toggles)
## Testing
Open `index.html` lokaal in browser. Test:
- Config wijzigingen worden direct toegepast
- Timer loopt correct af
- Beep speelt bij timer einde
- Spatiebalk werkt op blank screen
- Laatste stelling toont finish screen