Files

91 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Phase 1: Grundgerüst + Tippmechanik - Context
**Gathered:** 2026-03-29 (assumptions mode)
**Status:** Ready for planning
<domain>
## Phase Boundary
Eine spielbare Tipp-Übung im Browser, die ohne API funktioniert. Umfasst: Vite-Projekt-Setup, Projektstruktur, TypeScript-Interfaces, IndexedDB-Wrapper, Screen-Management, Willkommens-Screen mit Begleitfigur/Layout-Auswahl, QWERTZ-Bildschirmtastatur mit Fingerfarben, Übungsphase "Üben" (Buchstaben einzeln tippen), adaptives Tempo, Stufen 16 Daten, Stufenkarte, CSS-Palette/Typografie. Kein API-Zugriff, keine Bildgenerierung, keine Begleitfigur-Dialoge.
</domain>
<decisions>
## Implementation Decisions
### Screen Management Architecture
- **D-01:** All 5 screens (welcome, forest, lesson, reward, parent) exist as DOM containers in index.html, toggled via CSS classes with fade transitions. No dynamic DOM creation/destruction. Each screen is a `<section>` with a shared `.screen` class; only `.screen--active` is visible.
### IndexedDB Schema
- **D-02:** Create the full IndexedDB schema with all 5 stores (progress, companionAssets, styleReference, forestElements, settings) in Phase 1. Only `progress` and `settings` get full read/write methods; other stores are structurally defined but unused until Phase 2+. This avoids painful version migrations later.
### Typing Exercise Scope
- **D-03:** Phase 1 implements only the "Üben" (practice) phase — single letters appearing one at a time, typed by the child. "Entdecken" (TYPE-05) and "Wörter bauen" (TYPE-06) are Phase 3 scope. The lesson screen shows only the practice flow.
- **D-04:** A lesson consists of 812 random letters from the current level's key set. After all letters are correctly typed, the lesson is complete. No timer visible to the child.
### Companion Placeholders
- **D-05:** Welcome screen uses emoji placeholders (🧚 🦄 🦊 🦉) with character names for companion selection. No companion figure appears during typing exercise. Real generated avatars replace these in Phase 2 (ASST-03).
### Level Progression
- **D-06:** Levels 16 defined as static data with their key sets per the spec's progression table. A level counts as completed after one full playthrough (not perfection). Next level unlocks immediately.
- **D-07:** After completing a lesson, the app returns to the forest overview (Stufenkarte). No reward screen content in Phase 1 — the reward screen exists structurally but is skipped or shows a simple "Gut gemacht!" placeholder until Phase 3 adds Gemini-generated rewards.
### Adaptive Tempo
- **D-08:** Start interval 3s. After 2 correct in sequence: -200ms (min 1.5s). After 1 error: +500ms (max 4s). Reset to 3s at start of each new lesson.
### Claude's Discretion
- Screen transition timing and easing (CSS fade duration, easing function)
- Internal file/module organization within the spec's directory structure
- Exact DOM structure of keyboard component (divs vs buttons, row grouping)
- Test coverage scope — focus on typing logic and level progression, not DOM rendering
</decisions>
<canonical_refs>
## Canonical References
**Downstream agents MUST read these before planning or implementing.**
- `SPEC.md` — Full specification (sections 016), THE authoritative source for all design decisions
- `SPEC.md` section 4.1 — Level progression table (keys per level, finger assignments)
- `SPEC.md` section 6.2 — Tech stack decisions (all final)
- `SPEC.md` section 6.3 — IndexedDB store definitions
- `SPEC.md` section 7.2 — CSS color palette and typography
- `SPEC.md` section 8 — Keyboard layout, finger mapping, DE/CH differences
- `SPEC.md` section 13 — Project structure (directories + files)
- `.planning/REQUIREMENTS.md` — Phase 1 requirements: FNDN-0105, ONBD-0104, KYBD-0105, TYPE-0104, LEVL-0103, FRST-0405, PLSH-06
- `public/config.json` — Gemini API key and model names (not used in Phase 1 but structure exists)
</canonical_refs>
<code_context>
## Existing Code Insights
### Reusable Assets
No existing code — greenfield project. The only assets are:
- `public/config.json` with Gemini API key and model names
- `public/config.expample.json` as template
### Established Patterns
None yet — Phase 1 establishes all patterns. The spec mandates:
- Vanilla TypeScript, no framework
- Single `main.css` with CSS Custom Properties
- Biome for lint/format, Vitest for tests
- Vite 6.x with vanilla-ts template
### Integration Points
- `public/config.json` — Phase 2 will read this for API access; Phase 1 should not depend on it
- IndexedDB stores — Phase 2+ will use companionAssets, styleReference, forestElements stores created here
- Screen management — Phase 3 will add dynamic content to forest and reward screens
- Keyboard component — Phase 3 "Entdecken" phase will highlight keys for new letter introduction
</code_context>
<specifics>
## Specific Ideas
No specific requirements — open to standard approaches
</specifics>
<deferred>
## Deferred Ideas
None — analysis stayed within phase scope
</deferred>