| Goal | How we measure it | Status |
|---|---|---|
| Increase typing fluency with code | ≥15% WPM improvement after 10 recorded sessions | ✅ Tracking available |
| Maintain accuracy | Average error rate ≤3% for users who finish a prompt | ✅ Metrics collected |
| Keep the app snappy | First load <2s, keystroke latency ≤50ms | ✅ Achieved |
| Encourage language exploration | ≥80% of users try more than one language | 🎯 In progress |
| Sustain OSS momentum | Weekly contributions/issues, 1k ⭐ within 12 months | 🚀 Launching |
Real-Time Feedback
- Character-by-character correctness highlighting (correct/incorrect/pending states)
- Syntax-aware coloring via highlight.js with VS Code-compatible themes
- Smooth animations powered by Framer Motion
- Animated WPM, accuracy, completion, and elapsed time in the menu bar
- Sub-50ms keystroke latency with Rust WASM engine
Editor Features
- Auto-focus on page load for immediate typing
- Tab key expands indentation to match prompt structure (no manual spaces)
- Cmd/Ctrl + R restarts the current prompt instantly
- Cmd/Ctrl + K opens the explorer sidebar
- Invisible textarea overlay maintains native input behavior while displaying styled feedback
- Cursor position syncing for Tab advance
Built-in Content
- Curated algorithm prompts across multiple languages
- File-based organization (e.g.,
rust/binary_search.rs,typescript/quicksort.ts) - Language-specific grouping with automatic extension mapping
Custom Prompts
- Create, edit, and delete custom prompts via the explorer sidebar
- Full schema support (id, language, snippet, optional metadata)
- Persistent storage in IndexedDB
- Seamless integration with built-in prompts
Explorer Sidebar
- File tree-style organization by language
- Visual distinction between built-in and custom prompts
- Click to switch prompts instantly
- Toast notifications for language/prompt changes
Desktop-Inspired UI
- Draggable window with titlebar (double-click to recenter)
- Minimize, maximize, and close controls
- Fullscreen mode for distraction-free practice
- Glassmorphic panel with animated glow effect
Background & Aesthetics
- Monochrome grid backdrop (inspired by Midday.ai)
- Layered radial blur gradients (top corners + bottom center)
- Lowercase project header maintaining brand identity
- Smooth transitions and micro-interactions throughout
Syntax Themes
- Dark+ (VS Code default dark)
- Light+ (VS Code default light)
- GitHub Dark
- GitHub Light
- Monokai Pro
- Instant theme switching via menu bar
Session Tracking
- All metrics persist in IndexedDB (device-local only)
- Per-session records include:
- WPM (words per minute)
- Accuracy percentage
- Completion percentage
- Elapsed time
- Correct/incorrect character counts
- Total keystrokes
- Timestamp
- Prompt metadata (language, id, preview)
Stats Panel
- Collapsible bottom panel with live metrics
- Stats tab: Detailed breakdown of current session
- History tab: Last 8 sessions for the active prompt
- Expandable session cards showing full statistics
- Duration formatting (minutes and seconds)
Session History
- Per-prompt tracking to measure improvement
- Historical WPM, accuracy, and duration comparisons
- Stored indefinitely until manually cleared
- Browser devtools access for power users
Rust WASM Engine
- Compiled from
crates/enginevia wasm-pack - High-performance diff calculation algorithm
- Real-time feedback generation with token-level precision
- TypeScript fallback for development without WASM build
Data Processing
- Zero network requests after initial load
- Diff evaluation happens client-side (<10ms)
- Metrics calculated in real-time without blocking UI
- Session writes to IndexedDB are async and non-blocking
- 100% local storage — No data leaves your device
- No analytics or tracking — Not even anonymized
- No external API calls — Fully offline after first load
- No cookies — State managed via IndexedDB and localStorage
- Audit-friendly — All code is open source
- Additional prompt packs for Go, Ruby, Swift, Kotlin
- Syntax-focused drills (loops, conditionals, error handling)
- Interview preparation patterns (LeetCode-style)
- Common framework idioms (React hooks, Rust lifetimes)
- Export session history to CSV/JSON
- Streak tracking with daily/weekly goals
- Error heatmap visualization (most common mistake characters)
- Progress charts showing WPM/accuracy over time
- Per-language statistics dashboard
- Keyboard shortcut customization
- Color-blind friendly theme variants
- Screen reader support for stats panel
- Alternative input methods (paste mode for benchmarking)
- Prompt difficulty ratings
Adaptive Practice
- Weak point identification based on error patterns
- Automatically generated drills targeting problem areas
- Progressive difficulty adjustment
- Spaced repetition for mistake reinforcement
Extended Modes
- Syntax Mode: Focus on specific language constructs
- Speed Mode: Timed challenges with leaderboards
- Zen Mode: No metrics, just flow state practice
- Interview Mode: Common coding interview patterns
Content Tools
- CLI for validating prompt pack schemas
- Community pack discovery (privacy-preserving)
- Import/export custom prompt collections
- Version control integration for team shared packs
Privacy-Preserving Social
- Opt-in anonymous leaderboards (no PII)
- Community-submitted prompt packs with moderation
- Pack ratings and reviews
- Global statistics (aggregate, non-identifying)
Optional AI Assist
- Generate prompts based on skill level (behind privacy proxy)
- Code style suggestions after session completion
- Personalized learning paths
- Voice-controlled practice mode
Platform Expansion
- Desktop app (Tauri) for offline-first experience
- Mobile practice mode (simplified UI)
- VS Code extension for in-editor practice
- Terminal-based CLI trainer
Local Development
- Hot module replacement (HMR) with Vite
- TypeScript strict mode throughout
- ESLint + Prettier for consistent code style
- pnpm workspaces for monorepo management
- Pre-commit hooks with lint-staged
Testing
- Rust unit tests for engine logic
- Vitest for frontend component testing
- E2E testing framework prepared (future)
- Snapshot testing for UI components
Build & Deploy
- Optimized production builds (<500KB gzipped)
- WASM bundle automatically copied to web assets
- Source maps for debugging
- GitHub Actions CI/CD ready
To maintain focus and simplicity, DevKeys explicitly does not include:
- ❌ Social features that compromise privacy (real names, photos, messaging)
- ❌ Gamification that encourages unhealthy practice habits
- ❌ Subscription models or paywalls
- ❌ Third-party tracking or advertising
- ❌ Server-side session storage
- ❌ Competitive leaderboards with PII
- ❌ Integration with closed-source services by default
DevKeys is designed to be extended without forking:
- Custom Prompts — Users can create unlimited local prompts
- Theme System — New syntax themes via config
- Pack Format — Standardized JSON schema for community packs
- Storage Adapters — IndexedDB can be swapped for other local stores
- Engine Swap — TypeScript/Rust evaluators are pluggable
Every feature serves the goal: help developers type code faster and more accurately.