Add comprehensive Chinese reading course (乐读) with 4 chapters of vocabulary, texts, and exercises. Include architecture documentation for module development and progress tracking system. Content: - LEDU book metadata with 12 chapter outline - Chapter 1: Food culture (民以食为天) - 45+ vocabulary, etiquette - Chapter 2: Shopping (货比三家) - comparative shopping vocabulary - Chapter 3: Sports & fitness (生命在于运动) - exercise habits - Chapter 4: Additional vocabulary and grammar Documentation: - Architecture principles and patterns - Module creation guide (Game, DRS, Progress) - Interface system (C++ style contracts) - Progress tracking and prerequisites Game Enhancements: - MarioEducational helper classes (Physics, Renderer, Sound, Enemies) - VocabularyModule TTS improvements - Updated CLAUDE.md with project status 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
8.9 KiB
Interface System (C++ Style)
🎯 Philosophy
Like C++ header files (.h), we enforce strict interfaces that MUST be implemented. Any missing method = RED SCREEN ERROR at startup.
📦 Interface Hierarchy
StrictInterface (base)
├── ProgressItemInterface # For progress tracking items
│ ├── VocabularyDiscoveryItem
│ ├── VocabularyMasteryItem
│ └── Content Items (Phrase, Dialog, Text, Audio, Image, Grammar)
│
├── ProgressSystemInterface # For progress systems
│ ├── ProgressTracker
│ └── PrerequisiteEngine
│
└── DRSExerciseInterface # For exercise modules
├── VocabularyModule
├── TextAnalysisModule
├── GrammarAnalysisModule
├── TranslationModule
└── OpenResponseModule
🔥 1. StrictInterface (Base)
Location: src/DRS/interfaces/StrictInterface.js
Purpose: Ultra-strict base class with visual error enforcement.
Features:
- Validates implementation at construction
- Full-screen red error overlay if method missing
- Sound alert in dev mode
- Screen shake animation
- Impossible to ignore
Error Display:
┌─────────────────────────────────────────────┐
│ │
│ 🔥 FATAL ERROR 🔥 │
│ │
│ Implementation Missing │
│ │
│ Class: VocabularyModule │
│ Missing Method: validate() │
│ │
│ ❌ MUST implement all interface methods │
│ │
│ [ DISMISS (Fix Required!) ] │
│ │
└─────────────────────────────────────────────┘
📋 2. ProgressItemInterface
Location: src/DRS/interfaces/ProgressItemInterface.js
Purpose: Contract for all progress tracking items.
Required Methods (4)
validate() // Validate item data
serialize() // Convert to JSON
getWeight() // Return item weight for progress calculation
canComplete(state) // Check prerequisites
Implementations
| Class | Weight | Prerequisites |
|---|---|---|
| VocabularyDiscoveryItem | 1 | None |
| VocabularyMasteryItem | 1 | Discovered |
| PhraseItem | 6 | Vocabulary mastered |
| DialogItem | 12 | Vocabulary mastered |
| TextItem | 15 | Vocabulary mastered |
| AudioItem | 12 | Vocabulary mastered |
| ImageItem | 6 | Vocabulary discovered |
| GrammarItem | 6 | Vocabulary discovered |
Example Implementation
import ProgressItemInterface from '../interfaces/ProgressItemInterface.js';
class MyItem extends ProgressItemInterface {
constructor(id, metadata) {
super('my-item', id, metadata);
}
// ⚠️ REQUIRED
validate() {
if (!this.metadata.requiredField) {
throw new Error('Missing requiredField');
}
return true;
}
// ⚠️ REQUIRED
serialize() {
return {
...this._getBaseSerialization(),
customData: this.metadata.custom
};
}
// ⚠️ REQUIRED
getWeight() {
return ProgressItemInterface.WEIGHTS['my-item'] || 5;
}
// ⚠️ REQUIRED
canComplete(userProgress) {
// Check prerequisites
return true;
}
}
🔧 3. ProgressSystemInterface
Location: src/DRS/interfaces/ProgressSystemInterface.js
Purpose: Contract for all progress management systems.
Required Methods (17)
Vocabulary Tracking:
markWordDiscovered(word, metadata)markWordMastered(word, metadata)isWordDiscovered(word)isWordMastered(word)
Content Tracking:
markPhraseCompleted(id, metadata)markDialogCompleted(id, metadata)markTextCompleted(id, metadata)markAudioCompleted(id, metadata)markImageCompleted(id, metadata)markGrammarCompleted(id, metadata)
Prerequisites:
canComplete(itemType, itemId, context)
Progress:
getProgress(chapterId)
Persistence:
saveProgress(bookId, chapterId)loadProgress(bookId, chapterId)
Utility:
reset(bookId, chapterId)
Implementations
- ProgressTracker - Weight-based progress with items
- PrerequisiteEngine - Prerequisite checking and mastery tracking
🎮 4. DRSExerciseInterface
Location: src/DRS/interfaces/DRSExerciseInterface.js
Purpose: Contract for all DRS exercise modules.
Required Methods (10)
Lifecycle:
init(config, content)- Initialize exerciserender(container)- Render UIdestroy()- Clean up
Exercise Logic:
validate(userAnswer)- Validate answer- Returns:
{ isCorrect, score, feedback, explanation }
- Returns:
getResults()- Get results- Returns:
{ score, attempts, timeSpent, completed, details }
- Returns:
handleUserInput(event, data)- Handle user input
Progress Tracking:
markCompleted(results)- Mark as completedgetProgress()- Get progress- Returns:
{ percentage, currentStep, totalSteps, itemsCompleted, itemsTotal }
- Returns:
Metadata:
getExerciseType()- Return exercise type stringgetExerciseConfig()- Return config object- Returns:
{ type, difficulty, estimatedTime, prerequisites, metadata }
- Returns:
Implementations
- VocabularyModule - Flashcard spaced repetition
- TextAnalysisModule - AI-powered text comprehension
- GrammarAnalysisModule - AI grammar correction
- TranslationModule - AI translation validation
- OpenResponseModule - Free-form AI evaluation
✅ 5. ImplementationValidator
Location: src/DRS/services/ImplementationValidator.js
Purpose: Validate ALL implementations at application startup.
Validation Phases
🔍 VALIDATING DRS IMPLEMENTATIONS...
📦 PART 1: Validating Progress Items...
✅ VocabularyDiscoveryItem - OK
✅ VocabularyMasteryItem - OK
✅ PhraseItem - OK
✅ DialogItem - OK
✅ TextItem - OK
✅ AudioItem - OK
✅ ImageItem - OK
✅ GrammarItem - OK
🔧 PART 2: Validating Progress Systems...
✅ ProgressTracker - OK
✅ PrerequisiteEngine - OK
🎮 PART 3: Validating DRS Exercise Modules...
✅ VocabularyModule - OK
✅ TextAnalysisModule - OK
✅ GrammarAnalysisModule - OK
✅ TranslationModule - OK
✅ OpenResponseModule - OK
✅ ALL DRS IMPLEMENTATIONS VALID
Integration with Application.js
// At startup (lines 55-62)
console.log('🔍 Validating progress item implementations...');
const { default: ImplementationValidator } = await import('./DRS/services/ImplementationValidator.js');
const isValid = await ImplementationValidator.validateAll();
if (!isValid) {
throw new Error('❌ Implementation validation failed - check console for details');
}
🚨 Enforcement Rules
NON-NEGOTIABLE
- ❌ Missing method → RED SCREEN ERROR → App refuses to start
- ❌ Wrong signature → Runtime error on call
- ❌ Wrong return format → Runtime error on usage
- ✅ All methods implemented → App starts normally
Validation Happens
- ✅ At application startup (before any UI renders)
- ✅ On module registration
- ✅ At interface instantiation
✨ Benefits
- 🛡️ Impossible to forget implementation - Visual error forces fix
- 📋 Self-documenting - Interface defines exact contract
- 🔒 Type safety - Like TypeScript but enforced at runtime
- 🧪 Testable - Can mock interfaces for unit tests
- 🔄 Maintainable - Adding new method updates all implementations
📋 Interface Compliance Checklist
Before creating a new implementation:
- Identified correct interface to extend
- Implemented ALL required methods
- Correct method signatures
- Correct return formats
- Validation logic in place
- Added to ImplementationValidator
- Tested with validation at startup
- Documentation updated
🔍 Testing Your Implementation
// Manual test in console
const validator = await import('./DRS/services/ImplementationValidator.js');
const result = await validator.default.validateAll();
console.log(result); // true if valid, throws error otherwise
🚧 Adding New Interface Methods
When adding a new method to an interface:
- Update the interface class
- Update ALL implementations
- Update ImplementationValidator
- Update this documentation
- Test with validation
- Commit changes
Result: All implementations will show RED SCREEN ERROR until updated.
📖 Further Reading
docs/creating-new-module.md- How to create new modulesdocs/progress-system.md- Progress tracking detailsREADME.md- Project overview