A web-based typing practice app to improve speed and accuracy through consistent daily practice and real-time feedback.
- Multiple Datasets - English word lists (200, 1K, 5K, 10K), programming languages (JavaScript, Python, Rust, etc.), quotes, and commonly misspelled words
- Infinite Scrolling - Seamless text generation for uninterrupted practice
- Error Highlighting - Visual feedback on mistakes
- Backspace Support - Word and character-level corrections
- WPM Tracking - Live words per minute calculation
- Accuracy Metrics - Instant error detection and feedback
- Per-Key Statistics - Identify your weak spots with heatmap visualization
- Speed Classification - Fast, normal, and slow key indicators
- Cyberpunk Dark - Eye-friendly soft cyan with pink highlights
- Cyberpunk Light - Vibrant purple with modern aesthetics
- Glass Nature - Soothing green theme for focused practice
- Midnight Void - Pure black and white minimalism
- Mechanical Keyboard Sounds - NK Creams (Linear), Otemu Browns (Tactile), Holy Pandas (Tactile)
- Error Feedback - Audio cues for mistakes
- Toggle On/Off - Practice in silence when needed
- Offline Mode - Works without internet after initial load
- Installable - Add to home screen on mobile and desktop
- Fast Performance - Optimized with service workers and caching
- Dynamic Island UI - Beautiful expandable settings panel
- Keyboard Shortcuts -
Enterto reset/change dataset - Glassmorphism Design - Modern, premium aesthetic
- Responsive Layout - Works seamlessly across all devices
- Node.js 18.x or higher
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/iamhitya/dailytyping.git cd dailytyping -
Install dependencies
npm install
-
Start development server
npm run dev
-
Open your browser Navigate to
http://localhost:3000
npm run build
npm start- Framework: Next.js 15.4 - React framework with SSR and SSG
- Language: TypeScript - Type-safe JavaScript
- Styling: SCSS Modules - Scoped and modular styles
- State Management: Immer - Immutable state updates
- Audio: Howler.js - Cross-browser audio library
- PWA: next-pwa - Progressive Web App support
- Testing: Jest - JavaScript testing framework
- Start Typing - Click "Start Typing" or simply start typing to begin
- Change Dataset - Press
Enteror click the dataset selector - Toggle Theme - Click the sun/moon icon in the navigation
- Enable Sounds - Click the sound icon to toggle keyboard sounds
- View Stats - Check real-time WPM, accuracy, and per-key statistics
# Run all tests
npm test
# Run tests in watch mode
npm test -- --watch
# Run linting
npm run lint| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm start |
Start production server |
npm test |
Run test suite |
npm run lint |
Run ESLint |
npm run prettier |
Format code with Prettier |
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by modern typing practice applications
- Built with ❤️ for the typing community
- Special thanks to all contributors
If you have any questions or need help, feel free to reach out through:
- Open an issue on GitHub