Type faster. Code smarter.
A privacy-first typing trainer for developers.
Welcome to the documentation. This folder contains comprehensive design, architecture, and contribution materials for the project.
| Section | Description |
|---|---|
| Overview & Principles | Vision, core principles, and what makes DevKeys different |
| Goals & Features | Success metrics and feature roadmap |
| Syntax & Architecture | Technical architecture, data flow, and syntax pipeline |
| NFR & MVP Plan | Non-functional requirements and MVP scope |
| Rust Components | WASM engine architecture and Rust roadmap |
| Observability | Tracing, telemetry, and debugging strategies |
| Testing & CI | Test strategy and continuous integration |
| Licensing & Community | License, contribution model, and governance |
| Glossary | Key technical terms and definitions |
| Contributing | How to contribute code, prompts, and ideas |
Core Typing Experience
- Real-time character-by-character feedback with syntax highlighting
- Live metrics: WPM, accuracy, completion percentage, elapsed time
- Tab-to-indent assistance for code alignment
- Keyboard shortcuts (Cmd/Ctrl + R to restart, Cmd/Ctrl + K for explorer)
Prompt Management
- Built-in algorithm and pattern prompts for multiple languages
- Custom prompt creation, editing, and deletion
- File-based organization with language grouping
- Explorer sidebar with search and filtering
Analytics & History
- IndexedDB session persistence (all data stays local)
- Expandable stats panel with detailed metrics
- Per-prompt session history tracking
- Metrics include: keystrokes, correct/incorrect chars, duration
UI & UX
- Desktop-like window interface with drag, minimize, maximize
- Syntax theme switcher (Dark+, Light+, GitHub themes, Monokai)
- Smooth animations via Framer Motion
- Responsive layout with adaptive font sizing
Engine
- Rust WASM scoring engine for high-performance diff calculation
- TypeScript fallback for development without WASM
- Real-time feedback generation (<50ms latency)
- Expanded prompt packs (more languages and patterns)
- Statistics export (CSV/JSON)
- Streak tracking and goal setting
- Heatmap visualizations for error patterns
Phase 2: Advanced Learning
- Adaptive difficulty based on performance
- Weak-point identification and targeted practice
- Interview preparation mode
- Code structure pattern recognition
Phase 3: Community & Content
- User-submitted prompt pack sharing (privacy-preserving)
- Community leaderboards (opt-in, anonymous)
- AI-powered prompt generation (behind privacy proxy)
- Multi-language localization
DevKeys uses a modular architecture optimized for performance and privacy:
┌─────────────────────────────────────────────────┐
│ React UI │
│ (Zustand state, Tailwind styling, Framer) │
├─────────────────────────────────────────────────┤
│ highlight.js │
│ (Syntax tokenization) │
├─────────────────────────────────────────────────┤
│ Rust WASM Engine │
│ (Diff calculation, scoring, feedback) │
├─────────────────────────────────────────────────┤
│ IndexedDB Storage │
│ (Sessions, custom prompts, settings) │
└─────────────────────────────────────────────────┘
Key Design Decisions:
- Custom editor instead of Monaco to minimize bundle size and maintain full control over typing behavior
- highlight.js provides syntax colors without the overhead of a full language server
- Rust WASM for performance-critical diff algorithms while keeping TypeScript fallback for dev ergonomics
- IndexedDB ensures all data stays on-device with no network dependency
- Add your snippets to
apps/web/src/content/packs/your-pack.json - Register the pack in
apps/web/src/content/localPacks.ts - Follow the schema in CONTRIBUTING.md
- Edit Rust code in
crates/engine/src/ - Run
pnpm build:wasmto recompile - Test changes with
cargo test -p devkeys_engine
- All components follow feature-based organization
- Styles use Tailwind + TypeScript style objects
- Hooks encapsulate complex logic (see
features/*/hooks/)
We welcome contributions of all kinds:
- 🐛 Bug fixes and improvements
- ✨ New features and enhancements
- 📝 New prompt packs and content
- 📚 Documentation improvements
- 🎨 UI/UX enhancements
See CONTRIBUTING.md for detailed guidelines.
| Metric | Target | Current Status |
|---|---|---|
| Keystroke latency | ≤50ms | ✅ Achieved |
| First load time | <2s | ✅ Achieved |
| Bundle size | <500KB (gzipped) | ✅ Achieved |
| WASM overhead | <100KB | ✅ Achieved |
| Supported languages | 10+ | ✅ Achieved |
- Main README - Quick start guide
- Issue Tracker - Report bugs or request features
- Discussions - Ask questions and share ideas
Happy typing! ⌨️✨