An adaptive, client-side typing tutor that focuses on mastering keyboard patterns (bigrams, trigrams, and finger movements) rather than just words.
Most typing tutors focus on words or random characters. RlyType treats words merely as "delivery vehicles" for specific motor-skill patterns. By identifying exactly which key transitions (e.g., th, ing, ed) are slowing you down, the engine adapts in real-time to drill your weaknesses until they become muscle memory.
- Pattern Tracking: Every keystroke you make is measured for latency (Inter-Key Stroke Interval).
- Multi-Layer Attribution: A single keystroke updates stats for the character (Unigram), the pair (Bigram), and the triplet (Trigram).
- Real-Time Adaptation: The engine identifies "bottlenecks"—patterns where your speed is significantly below your target WPM.
- Targeted Drilling: The generator selects words from a local dictionary that specifically contain your weakest patterns.
- Mastery-Based Progression: Visual heatmaps and charts show your progress across Unigrams, Bigrams, and Trigrams.
- Dynamic Learning Modes:
- Reinforced: Weighted random selection targeting weaknesses while maintaining overall flow.
- Sequential: Strict drilling of your absolute weakest patterns first.
- Offline-First: All statistics and configurations are stored locally in your browser using IndexedDB. No server required.
- Performance Focused: Built with vanilla TypeScript and direct DOM manipulation for zero-latency input processing.
- Monorepo: Turborepo
- Frontend: Vite + TypeScript
- Engine Logic: Framework-agnostic TypeScript packages
@rlytype/core: Mastery logic and EWMA statistics.@rlytype/generator: Inverted index and word selection.@rlytype/storage: IndexedDB persistence layer.@rlytype/ui: Modular rendering components.
- Styling: Vanilla CSS with custom properties for a modern, high-contrast UI.
├─ apps/
│ └─ frontend/ # Main application entry and engine orchestration
├─ packages/
├─ core/ # Pattern extraction and stat calculations
├─ storage/ # IndexedDB persistence
├─ generator/ # Word selection logic
├─ ui/ # Shared UI components and renderers
└─ types/ # Shared TypeScript interfaces
- Install dependencies:
npm install
- Start development server:
npm run dev
- Build for production:
npm run build

