Quick reference for AI assistants working on this project.
- User Documentation: See
README.mdfor installation and usage - Contributor Guide: See
docs/README.mdfor development workflow - Feature Details: See
docs/features/<feature-name>/for requirements/design/tasks
Phase 1: MVP - ✅ Completed Phase 2: Home Row Levels 2-6 - ✅ Completed Phase 2+: Adaptive Mode - ✅ Completed Phase 3: Visual Keyboard Display - ✅ Completed Phase 3.1: Layout Improvements - ✅ Completed Phase 3.2: Finger Training - ✅ Completed Phase 3.3: Two-Level Menu System - ✅ Completed Phase 3.4: Menu Grouping - ✅ Completed Phase 3.5: Statistics Dashboard - ✅ Completed Phase 3.6: AltGr Modifier Support - ✅ Completed Phase 3.7: Custom Lessons - ✅ Completed Current Focus: Phase 3+ (Analytics visualization, data export, gamification)
The codebase contains 29 intentional #[allow(dead_code)] annotations marking Phase 3+ features that are:
- Fully tested and ready for future implementation
- Strategic placeholders for planned features (analytics, export, multi-layout support)
- Preserved to avoid reimplementation work
These are NOT technical debt - they represent well-architected future functionality.
Categories:
- Analytics & Statistics APIs (6): BigramStats methods, Stats methods, Storage.get_path()
- Lesson Metadata (3): title, description, keys - used in menu display
- Frequency Data (4): Linguistic research data for weighted practice
- Code Categorization (2): SymbolCategory for future UI filtering
- Keyboard Abstraction (3): AzertyLayout for multi-layout support
- UI Placeholders (3): CursorWindow fields for scrolling/pagination
- Test Utilities (3): Reusable drill generation patterns
- Adaptive Features (2): WeaknessDetector (fully tested, ready for UI)
- Scoring Utilities (1): calculate_accuracy() reference implementation
- Custom Lesson Validation (1): ParseError::InvalidFrontMatter for future strict YAML validation
Terminal-based typing trainer for AZERTY keyboards with real-time feedback and code-focused practice.
This project uses feature-based documentation. See docs/README.md for:
- Requirements → Design → Tasks workflow
- Steering documents (product, tech, structure)
- Feature documentation organization
60 lessons across 6 categories: Adaptive, Finger Training, Row Training, Languages, Code, Custom
| Feature | Module | Status |
|---|---|---|
| Typing Engine | src/engine/ |
✅ Phase 1 |
| Home Row Lessons | src/content/generator.rs |
✅ Phase 2 |
| Bigram/Trigram Training | src/content/bigram_generator.rs |
✅ Phase 2 |
| Code Symbols | src/content/code_generator.rs |
✅ Phase 2 |
| Adaptive Mode | src/engine/analytics.rs, adaptive.rs |
✅ Phase 2+ |
| Visual Keyboard | src/ui/keyboard.rs |
✅ Phase 3.6 (with AltGr) |
| Finger Training | src/content/finger_generator.rs |
✅ Phase 3.2 |
| Two-Level Menu | src/content/category.rs, app.rs |
✅ Phase 3.3 |
| Statistics Dashboard | src/ui/render.rs |
✅ Phase 3.5 |
| Custom Lessons | src/content/custom.rs |
✅ Phase 3.7 |
See docs/README.md#features-overview for detailed feature descriptions.
# Development
cargo run # Launch application
cargo test # Run test suite (145 tests)
cargo check # Fast compilation check
# Testing Adaptive Mode
cargo run --example create_test_stats # Generate test data
cargo run --example verify_adaptive # Verify adaptive configuration
# Quality
cargo clippy # Linting
cargo fmt # Code formatting
# Release
cargo build --release # Optimized build
# Release (use automated script)
./scripts/release.sh 0.8.0 # Bumps version, updates changelog, creates tag
git push origin main && git push origin v0.8.0 # Push to trigger automated release workflowRuns on every push to main and all PRs: formatting, linting, tests (145 passing), security audit.
Triggers on git tag v*.*.*:
- Generates changelog with git-cliff (conventional commits)
- Builds cross-platform binaries (Linux, macOS Intel/ARM64)
- Creates GitHub Release with binaries and checksums
Creating a Release:
# Use the automated release script
./scripts/release.sh 0.8.0
# Then push to trigger the release workflow
git push origin main && git push origin v0.8.0The script handles:
- Version validation and duplicate tag checking
- Cargo.toml and Cargo.lock updates
- Complete CHANGELOG.md regeneration
- Commit with conventional message
- Tag creation
See docs/steering/release-process.md for detailed instructions.
See .github/workflows/ for complete workflow details.
src/
├── main.rs # Entry point
├── app.rs # App state machine, two-level navigation, event loop
├── ui/ # TUI rendering
│ ├── render.rs # Category menu, lesson menu, layout rendering
│ └── keyboard.rs # Visual keyboard display
├── engine/ # Session logic, scoring, analytics
│ ├── analytics.rs # Per-key/bigram statistics tracking
│ ├── adaptive.rs # Weakness detection, spaced repetition
│ ├── scoring.rs # WPM and accuracy calculations
│ └── types.rs # TypingSession and CharInput
├── content/ # Lesson generation and organization
│ ├── category.rs # Lesson categories, filtering
│ ├── adaptive_generator.rs # Personalized content
│ ├── bigram_generator.rs # Bigram practice
│ ├── code_generator.rs # Code symbols
│ ├── custom.rs # User-provided markdown lessons
│ ├── finger_generator.rs # Finger-based drills
│ ├── lesson.rs # Lesson types, definitions
│ └── generator.rs # Home row drills
├── data/ # Stats persistence (with adaptive analytics)
└── keyboard/ # AZERTY layout and data model
- Language: Rust 2021
- TUI: ratatui + crossterm
- Persistence: serde + serde_json
- Randomization: rand (for adaptive content variety)
- CLI: clap (prepared for future phases)
- AZERTY keyboard only (Phase 1-2)
- French language only (Phase 1-2)
- Backspace support enabled (Phase 1+)
- Enter/newline support with
↵icon visualization - Random newlines in practice content (25% probability)
- No sound effects (all phases)
- Terminal-only (no GUI)
Stats saved to: ~/.config/typer-cli/stats.json
Contains session history and adaptive analytics (per-key stats, bigram stats, mastery levels).
See docs/features/session-storage/ for complete schema.
Phase: 3.7 Complete (Custom Lessons) Next: Phase 3+ (Analytics visualization, data export, gamification) Tests: 145 passing Lessons: 60 built-in + user custom lessons
See docs/README.md#project-status for complete roadmap.