A Rust CLI application for learning and improving touch typing on AZERTY keyboards.
Typer CLI is a terminal-based keyboard typing training tool. It provides an interactive TUI (Terminal User Interface) for practicing touch typing with immediate visual feedback and real-time statistics.
- Progressive Lessons: 60 lessons from home row basics to advanced code symbols
- Real-time Feedback: Instant visual feedback (green/red) and live WPM/accuracy metrics
- Adaptive Mode: Personalized training targeting your weaknesses
- Visual Keyboard: Full AZERTY layout with next-key highlighting, AltGr support, and heatmaps
- AltGr Support: Full support for code symbols ({}[]@#|`^~) on AZERTY keyboards
- Comprehensive Practice: French/English bigrams, trigrams, TypeScript/Rust/Python symbols
- Statistics Dashboard: Track progress with performance analytics
- Finger Training: Targeted drills for each finger pair
- Session Persistence: All data saved locally for privacy
See docs/README.md#features-overview for complete feature list and implementation details.
Download the latest release for your platform from GitHub Releases:
# Linux (x86_64) wget https://github.com/jrollin/typer-cli/releases/latest/download/typer-cli-linux-x86_64 chmod +x typer-cli-linux-x86_64 ./typer-cli-linux-x86_64 # macOS (Intel) wget https://github.com/jrollin/typer-cli/releases/latest/download/typer-cli-macos-x86_64 chmod +x typer-cli-macos-x86_64 ./typer-cli-macos-x86_64 # macOS (Apple Silicon M1/M2/M3) wget https://github.com/jrollin/typer-cli/releases/latest/download/typer-cli-macos-arm64 chmod +x typer-cli-macos-arm64 ./typer-cli-macos-arm64Verify Checksum (optional but recommended):
# Download checksum file wget https://github.com/jrollin/typer-cli/releases/latest/download/typer-cli-linux-x86_64.sha256 # Verify shasum -a 256 -c typer-cli-linux-x86_64.sha256Prerequisites:
- Rust 1.70+ (install via rustup)
# Clone the repository git clone https://github.com/jrollin/typer-cli.git cd typer-cli # Build in release mode cargo build --release # Run ./target/release/typer-cli# Development mode cargo run # Or with release executable ./target/release/typer-cliIn Category Menu:
- β/β or j/k: Navigate categories
- Enter or Space: Open category
- 1-5: Quick select category by number
- ESC or q: Quit application
In Lesson Menu:
- β/β or j/k: Navigate lessons
- Enter or Space: Select lesson
- 1-9: Quick select lesson by number
- ESC or q: Return to category menu
During Practice:
- Typing: Simply type the displayed characters
- Backspace: Correct mistakes
- Tab: Toggle keyboard display visibility
- Ctrl+F: Toggle finger color hints on keyboard
- Ctrl+H: Toggle accuracy heatmap overlay
- ESC: Return to menu
In Duration Menu:
- β/β or j/k: Navigate durations
- Enter or Space: Start lesson
- ESC or q: Return to lesson menu
After Completion:
- q or ESC: Return to lesson menu
- r: Restart same lesson
The interface features a clean, organized layout with consistent margins:
βββββββββββββββββββββββββββββββββββ β TYPER CLI - Home Row Practice β β Header βββββββββββββββββββββββββββββββββββ€ β WPM: 45 β Accuracy: 98% β 00:15 β β Stats βββββββββββββββββββββββββββββββββββ€ β Text to type: β β ff jj ff jj dd kk β β Content β Your input: β β ff jj fβ β βββββββββββββββββββββββββββββββββββ€ β [AZERTY Keyboard Layout] β β Keyboard (Tab to toggle) β Next key highlighted β β Tab β Ctrl+H β Ctrl+F β β β β ESC to quit β β Instructions βββββββββββββββββββββββββββββββββββ Visual Feedback:
- Green: Correct character
- Red: Incorrect character
- White: Not yet typed
- Blinking cursor: Current position
- Cyan highlight: Next key to press (on keyboard)
Keyboard Display Features:
- Full AZERTY layout visualization
- Real-time next-key highlighting
- Shift state indicators
- Optional finger color hints (Ctrl+F)
- Optional accuracy heatmap overlay (Ctrl+H)
- Toggle visibility with Tab
Built with Rust using ratatui for the terminal UI.
See docs/steering/tech.md for complete stack details.
Modular Rust codebase organized by feature:
src/engine/- Core typing engine, analytics, adaptive algorithmssrc/content/- Lesson generation and categorizationsrc/ui/- Terminal interface renderingsrc/data/- Statistics persistencesrc/keyboard/- AZERTY layout model
See docs/steering/structure.md for detailed architecture.
Session statistics are saved to ~/.config/typer-cli/stats.json.
The file contains session history and adaptive analytics for personalized training. See docs/features/session-storage/ for data schema details.
Create your own typing lessons by placing markdown files in ~/.config/typer-cli/custom/ or ./custom/ (current directory).
Custom lessons use markdown files with optional YAML front matter:
--- title: My Custom Lesson description: Practice domain-specific vocabulary --- Your custom content to practice goes here. Line breaks and spacing are preserved. Multiple lines are supported.- Two locations: Config directory (
~/.config/typer-cli/custom/) or current directory (./custom/) - YAML front matter: Optional metadata with
titleanddescriptionfields - Title fallback: If no front matter, filename (without .md) is used as title
- Preserved formatting: Line breaks, spacing, and indentation are maintained during practice
- Automatic deduplication: Duplicate titles get (1), (2) suffix
- Statistics tracking: Session stats saved using lesson title as identifier
- Error handling: Invalid files show warnings but don't crash the application
-
Create
~/.config/typer-cli/custom/git-commands.md:--- title: Git Commands Practice description: Common git operations --- git status git add . git commit -m "feat: add feature" git push origin main git pull --rebase git branch -d feature-branch
-
Launch Typer CLI and select "Custom" category
-
Choose "Git Commands Practice" from the lesson list
-
Practice with preserved formatting and line breaks
See docs/features/custom-lessons/ for complete documentation.
cargo run # Launch application cargo build --release # Build optimized binarycargo test # Run test suite (146 passing tests)cargo clippy # Linting cargo fmt # Formatting cargo check # Fast compilation checkSee docs/README.md for contributor workflow and detailed test coverage.
Current Version: Phase 3.5 Complete (Statistics Dashboard) Total Lessons: 60 Test Coverage: 145 passing tests
See docs/README.md#project-status for detailed roadmap and planned features.
- User Guide: You're reading it (installation, usage, controls)
- Contributing: See docs/README.md for development workflow
- Features: See docs/README.md#features-overview
- AI Context: See CLAUDE.md
Feature-specific documentation follows the Requirements β Design β Tasks workflow. See docs/features/ for individual feature documentation.
This project is a personal learning tool.
Developed with the help of Claude (Anthropic).