5.6 KiB
5.6 KiB
Implementation Plan
Objective
Rewrite task descriptions in the Colors (4 lessons) and Box Model (8 lessons x 6 locales) modules so they describe desired visual outcomes rather than giving exact CSS declarations. For colors, also update validations to accept multiple valid color values.
Approach
This follows the same pattern as the flexbox fix (PR #5). Two types of changes:
- Colors module: Rewrite tasks AND update validations from
property_value(single answer) toregex(multiple valid colors). This is because the issue explicitly says "accept multiple valid solutions" and colors naturally have many equivalent options. - Box Model module: Rewrite tasks only. Validation messages already use pedagogical hints. Box model properties have specific correct answers (e.g.,
box-sizing: border-boxhas no alternative), so validations stay as-is.
File Mapping
| File | Action | Description |
|---|---|---|
lessons/03-colors.json |
modify | Rewrite 4 tasks + change 4 validations from property_value to regex |
lessons/01-box-model.json |
modify | Rewrite 8 task fields |
lessons/ar/01-box-model.json |
modify | Rewrite 8 task fields (Arabic) |
lessons/de/01-box-model.json |
modify | Rewrite 8 task fields (German) |
lessons/es/01-box-model.json |
modify | Rewrite 8 task fields (Spanish) |
lessons/pl/01-box-model.json |
modify | Rewrite 8 task fields (Polish) |
lessons/uk/01-box-model.json |
modify | Rewrite 8 task fields (Ukrainian) |
No validator code changes needed — existing regex type already supports multi-value patterns.
Detailed Changes
Colors Module
colors-1 (Background Color)
- Task: Describe that notification card looks bare, needs a soft warm background
- Validation: Change from
property_value(seashell only) toregexaccepting warm named colors (seashell, linen, mistyrose, lavenderblush, cornsilk, oldlace, papayawhip, antiquewhite, bisque, peachpuff) - Message: Hint at background-color property
colors-2 (Text Color)
- Task: Describe that title needs to pop with a warm accent color
- Validation: Change from
property_value(coral only) toregexaccepting warm accent colors (coral, tomato, orangered, indianred, salmon, darksalmon) - Message: Hint at color property
colors-3 (Border Color)
- Task: Describe that card border needs a warm accent color
- Validation: Change from
property_value(coral only) toregexaccepting warm accent colors (coral, tomato, orangered, indianred, salmon, darksalmon, crimson) - Message: Hint at border-color property
colors-4 (Hex Colors)
- Task: Describe wanting a gold/yellow badge background, mentioning hex format since that's the lesson's teaching point
- Validation: Change from
property_value(#ffd700 only) toregexaccepting gold hex variants (#ffd700, #ffcc00, #ffc107, #f0c000) and also the named colorgold - Message: Hint at using a hex code for background-color
Box Model Module (per-lesson, applied across all 6 locales)
box-model-1 (Padding)
- Current: "Add
padding: 1rem..." - New: Describe that text is pressed against the edges and needs inner breathing room
box-model-2 (Borders)
- Current: "Add
border-left: 4px solid steelblue" - New: Describe wanting a colored accent line on the left side of the card
box-model-3 (Margins)
- Current: "Add
margin-bottom: 1rem" - New: Describe that the two cards are touching and need space between them
box-model-4 (Box Sizing)
- Current: "Fix with
box-sizing: border-box" - New: Describe the visual problem (right card overflows) and ask to fix its sizing model
box-model-5 (Padding Shorthand)
- Current: "Set
padding: 8px 1rem" - New: Describe the button needing more horizontal than vertical space, mention the two-value shorthand concept
box-model-6 (Margin Shorthand)
- Current: "Set
margin: 0 auto" - New: Describe the card being left-aligned and needing to be horizontally centered
box-model-7 (Border Radius)
- Current: "Make with
border-radius: 50%" - New: Describe the square avatar needing to appear as a circle
box-model-8 (Complete Card)
- Current: Lists all 3 exact property declarations
- New: Describe three visual goals: inner spacing, left accent line, softened corners
Architecture Decisions
- No validator code changes: The existing
regexvalidation type handles multi-value matching. - Colors get multi-value validations: Colors naturally have equivalents (coral vs tomato). Accept a curated set of named colors per lesson.
- Box model keeps exact validations: Properties like
padding: 1remorbox-sizing: border-boxhave only one correct answer. The task text changes are sufficient. - Solution fields unchanged: The
solutionfield shows the canonical answer and is unrelated to copy-paste behavior. - codePrefix unchanged: Already shows the selector context.
Risks
| Risk | Likelihood | Mitigation |
|---|---|---|
| Color regex too permissive/restrictive | Medium | Curate a small set of 6-10 named colors per lesson that visually work in the preview |
| Locale translations lose nuance | Low | Follow the same structure: describe the visual outcome in each language |
| Box model tasks become too vague | Low | Keep mentioning the visual problem — students have the description for concept reference |
Testing Strategy
- Run
npm run test— all existing tests should pass - Run
npm run format.lessons— ensure JSON files are properly formatted - Verify JSON schema conformance for all modified files