WortMeister is an advanced flashcard application designed specifically for German language learning, implementing the SuperMemo 2 (SM2) spaced repetition algorithm for optimal learning efficiency.
- Advanced Spaced Repetition: Implements the SM2 algorithm for optimal learning intervals
- Bi-directional Learning: Automatically creates reverse cards for comprehensive practice
- Multiple Study Modes:
- Study Mode: Full spaced repetition with interval tracking
- Practice Mode: Quick practice without affecting card intervals
- Category Management: Organize cards by categories
- Search Functionality: Quick search through all flashcards
- Smart Text Processing:
- Intelligent answer checking with normalization
- Format preservation for complex grammar patterns
- Line break handling for long phrases
- Modern Kivy-based GUI: Clean and responsive interface
- Multiple Screens:
- Home Screen: Main navigation
- Category Screen: Category selection
- Study Screen: Interactive study interface
- Add Card Screen: Card creation with category management
- Search Screen: Card search functionality
- Visual Feedback:
- Color-coded responses
- Animated transitions
- Clear success/failure indicators
WortMeister/
├── core/
│ ├── algorithm/
│ │ ├── __init__.py
│ │ └── sm2.py # SuperMemo 2 algorithm implementation
│ ├── utils/
│ │ ├── file_handler.py # Data persistence
│ │ ├── text_formatter.py
│ │ ├── text_processor.py
│ │ └── validation.py
│ ├── flashcard.py # Flashcard model
│ └── manager.py # Flashcard management
├── gui/
│ ├── kv/ # Kivy UI definitions
│ │ ├── home_screen.kv
│ │ ├── category_screen.kv
│ │ ├── study_screen.kv
│ │ ├── add_card_screen.kv
│ │ └── search_screen.kv
│ ├── screens/
│ │ ├── study/ # Study mode implementations
│ │ │ ├── modes.py
│ │ │ ├── study_mode.py
│ │ │ └── practice_mode.py
│ │ ├── home_screen.py
│ │ ├── category_screen.py
│ │ ├── study_screen.py
│ │ └── add_card_screen.py
│ └── utils/ # GUI utilities
│ ├── ui_helpers.py
│ ├── ui_feedback.py
│ └── widget_styles.py
├── tests/ # Comprehensive test suite
│ ├── core/ # Core functionality tests
│ └── gui/ # UI component tests
├── storage/ # Data storage
├── main.py # Application entry point
└── app.kv # Main Kivy configuration
- Adaptive interval calculation based on performance
- Quality rating system (0-5)
- Easiness factor adjustment
- Repetition count tracking
- CRUD operations for flashcards
- Category organization
- Bi-directional card creation
- Due card calculation
- Text normalization for answer checking
- Format preservation for complex answers
- Intelligent line break handling
The project includes a comprehensive test suite covering:
-
Core Algorithm Tests
- SM2 algorithm calculations
- Interval computations
- Due date calculations
-
Flashcard Tests
- Answer validation
- Review updates
- Category management
-
UI Component Tests
- Screen interactions
- Widget behavior
- User input handling
Run tests using:
python tests/run_tests.py
- Python 3.8+
- Kivy 2.2.1+
- Additional dependencies in requirements.txt
- Clone the repository
- Install dependencies:
pip install -r requirements.txt
- Run the application:
python main.py
- Fork the repository
- Create a feature branch
- Commit changes
- Submit a pull request
This project is licensed under the GPL-3.0 License. See the LICENSE file for details.
For questions or feedback:
- Email: [email protected]
- GitHub: DvidMakesThings