Features Overview¶
Baboon is packed with features designed to make you a better typist. Here's what sets it apart from other typing tutors.
Dual Interface Design¶
:material-console: Terminal UI
A beautiful TUI built with Bubble Tea and Lipgloss. Unicode block characters create stunning large letters that change colour as you type.
- Works over SSH
- No browser needed
- Minimal resource usage
- Spring-based animations
:material-web: Web UI
A modern React application with Chakra UI and Framer Motion. Physics-based animations make typing feel satisfying.
- Works on any device
- Touch-friendly
- Responsive design
- Chunky button aesthetics
Intelligent Word Selection¶
Baboon doesn't just throw random words at you. It uses a sophisticated algorithm to maximise your learning:
Adaptive Learning¶
flowchart LR
A[Track Mistakes] --> B[Identify Weak Letters]
B --> C[Weight Word Selection]
C --> D[More Practice on Weak Areas]
D --> A
- Frequency balancing: Ensures all letters get coverage
- Accuracy weighting: Prioritises letters you frequently mistype
- Combined scoring: Words are ranked by how helpful they'll be
Consistent Rounds¶
Every round contains:
- Exactly 30 words
- Exactly 150 characters
This ensures your WPM scores are always comparable across sessions.
Real-time Visual Feedback¶
Colour-coded Letters¶
| Colour | Meaning |
|---|---|
| Gray | Not yet typed |
| Green | Correctly typed |
| Red | Incorrectly typed |
Letters change colour instantly - no lag, no delay.
Live WPM Bar¶
A gradient progress bar shows your current speed:
Colours indicate performance:
- Red: Below 40 WPM
- Yellow: 40-60 WPM
- Green: Above 60 WPM
Word Carousel¶
See what's coming next:
- Previous word (dimmed, above)
- Current word (bright, center)
- Next 3 words (dimmed, below)
Smooth spring animations when transitioning between words.
Comprehensive Statistics¶
Baboon tracks more than just WPM:
Core Metrics¶
| Metric | Description |
|---|---|
| WPM | Words per minute (correct chars / 5 / minutes) |
| Accuracy | Correct keystrokes as a percentage |
| Time | Round completion duration |
Per-Letter Analysis¶
- Accuracy: How often you hit each letter correctly
- Frequency: How often each letter appears
- Seek time: How fast you reach each letter
Typing Theory Metrics¶
- Finger accuracy: Performance by finger (8 fingers)
- Row accuracy: Top/Home/Bottom row performance
- Hand balance: Left vs right distribution
- Alternation rate: Hand-switching frequency
- Same-finger bigrams: Slow letter pairs detected
- Rhythm consistency: Typing evenness (std deviation)
- Error patterns: Common letter substitutions
Persistence¶
All statistics are saved to ~/.config/baboon/stats.json:
- Survives between sessions
- Tracks historical bests
- Maintains running averages
- Records per-letter stats
Cross-Platform Support¶
| Platform | Support |
|---|---|
| Linux | AMD64, ARM64 |
| macOS | Intel, Apple Silicon |
| Windows | AMD64 |
Package Formats¶
- Native binaries
- DEB packages (Debian/Ubuntu)
- RPM packages (Fedora/RHEL)
- Flatpak
- Nix flakes
British English¶
Baboon uses proper British spellings throughout:
- colour (not color)
- behaviour (not behavior)
- organisation (not organization)
- travelling (not traveling)
Punctuation Mode¶
Enable punctuation practice with the -p flag:
Words are separated by random punctuation: , . ; : ! ?
Architecture¶
Client-Server Design¶
flowchart TB
subgraph Frontend
TUI[Terminal UI]
Web[Web UI]
end
subgraph Backend
API[REST API]
Engine[Game Engine]
Stats[Statistics]
end
TUI --> API
Web --> API
API --> Engine
Engine --> Stats
- Frontend handles all timing-critical measurements
- Backend manages game logic and persistence
- Multiple clients can connect to one server
Technology Stack¶
| Component | Technology |
|---|---|
| Backend | Go |
| TUI | Bubble Tea, Lipgloss, Harmonica |
| Web | React 18, Chakra UI, Framer Motion |
| Animations | Spring physics (Harmonica) |
| Build | Nix flakes |
What's Next?¶
Explore each feature in detail: