# 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) ```javascript 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 ```javascript 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 exercise - `render(container)` - Render UI - `destroy()` - Clean up **Exercise Logic:** - `validate(userAnswer)` - Validate answer - Returns: `{ isCorrect, score, feedback, explanation }` - `getResults()` - Get results - Returns: `{ score, attempts, timeSpent, completed, details }` - `handleUserInput(event, data)` - Handle user input **Progress Tracking:** - `markCompleted(results)` - Mark as completed - `getProgress()` - Get progress - Returns: `{ percentage, currentStep, totalSteps, itemsCompleted, itemsTotal }` **Metadata:** - `getExerciseType()` - Return exercise type string - `getExerciseConfig()` - Return config object - Returns: `{ type, difficulty, estimatedTime, prerequisites, metadata }` ### 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 ```javascript ๐Ÿ” 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 ```javascript // 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 1. โŒ **Missing method** โ†’ RED SCREEN ERROR โ†’ App refuses to start 2. โŒ **Wrong signature** โ†’ Runtime error on call 3. โŒ **Wrong return format** โ†’ Runtime error on usage 4. โœ… **All methods implemented** โ†’ App starts normally ### Validation Happens - โœ… At application startup (before any UI renders) - โœ… On module registration - โœ… At interface instantiation ## โœจ Benefits 1. ๐Ÿ›ก๏ธ **Impossible to forget implementation** - Visual error forces fix 2. ๐Ÿ“‹ **Self-documenting** - Interface defines exact contract 3. ๐Ÿ”’ **Type safety** - Like TypeScript but enforced at runtime 4. ๐Ÿงช **Testable** - Can mock interfaces for unit tests 5. ๐Ÿ”„ **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 ```javascript // 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: 1. Update the interface class 2. Update ALL implementations 3. Update ImplementationValidator 4. Update this documentation 5. Test with validation 6. Commit changes **Result**: All implementations will show RED SCREEN ERROR until updated. ## ๐Ÿ“– Further Reading - `docs/creating-new-module.md` - How to create new modules - `docs/progress-system.md` - Progress tracking details - `README.md` - Project overview