A modern, feature-rich touch typing tutor application built with React and TypeScript. Master keyboard typing with real-time feedback, multiple keyboard layouts, and comprehensive statistics.
Features β’ Installation β’ Usage β’ Contributing β’ License
Blind Typing Tutor is a free, open-source web application designed to help users learn and improve their touch typing skills. The application supports 28+ keyboard layouts, 8 learning languages, and 29 interface languages, making it accessible to users worldwide.
- Free & Open Source - No ads, no tracking, completely free
- Multi-Language Support - Learn typing in 8 languages with 29 interface languages
- Multiple Keyboard Layouts - Support for QWERTY, QWERTZ, AZERTY, and more
- Real-Time Feedback - Instant visual and audio feedback on your typing
- Comprehensive Statistics - Track WPM, accuracy, and errors
- Modern UI - Beautiful, responsive design with dark mode support
- Accessible - Works on all modern browsers, no installation required
-
Three Learning Modes
- Practice Mode - Random words for continuous practice
- Beginner Mode - Repeated words for muscle memory
- Custom Mode - Practice with your own text
-
Real-Time Statistics
- Words Per Minute (WPM) tracking
- Accuracy percentage
- Error count and highlighting
-
Visual Keyboard
- Interactive keyboard visualization
- Color-coded finger zones
- Hand hints for proper finger placement
- Active key highlighting
-
Audio Feedback
- Keyboard click sounds
- Error sound alerts
- Toggleable audio controls
-
28+ Keyboard Layouts including:
- English (US, UK)
- German (QWERTZ)
- French (AZERTY)
- Spanish, Portuguese, Italian
- Russian, Ukrainian (Cyrillic)
- Turkish, Arabic, Hebrew
- Japanese, Korean, Chinese
- And many more...
-
8 Learning Languages with word lists:
- English, Ukrainian, Turkish
- German, French, Spanish
- Portuguese, Russian
-
29 Interface Languages for UI localization
- Dark/Light mode toggle
- Responsive design (mobile-friendly)
- Auto-advance to next phrase
- Correction mode (prevents typing errors)
- Customizable settings
- Persistent preferences (localStorage)
- Node.js 18+ and npm/pnpm/yarn
- Modern web browser (Chrome, Firefox, Safari, Edge)
-
Clone the repository
git clone https://github.com/stanislavkhatko/blind-typing-tutor.git cd blind-typing-tutor -
Install dependencies
npm install # or pnpm install # or yarn install
-
Start development server
npm run dev
-
Open in browser
http://localhost:5173
# Build the project
npm run build
# Preview production build
npm run preview- Select your keyboard layout from the dropdown in the header
- Choose learning mode (Practice, Beginner, or Custom)
- Select learning language for the content you want to practice
- Start typing - the app will track your progress automatically
- Review statistics - WPM, accuracy, and errors are displayed in real-time
- Toggle Keyboard Visibility - Show/hide the visual keyboard
- Hand Hints - Display which hand should type each key
- Color Zones - Visual color coding for finger zones
- Correction Mode - Prevents advancing until you type correctly
- Sound Feedback - Enable/disable typing sounds
- Custom Text - Practice with your own text in Custom mode
- Type directly to start practicing
- The input field auto-focuses for immediate typing
# Run all tests
npm run test:e2e
# Run tests in UI mode (interactive)
npm run test:e2e:ui
# Run tests in headed mode (see browser)
npm run test:e2e:headed
# Run tests for specific browser
npx playwright test --project=chromiumIf tests fail due to missing browsers:
npx playwright installblind-typing-tutor/
βββ src/
β βββ components/ # React components
β β βββ Game.tsx # Main game component
β β βββ Keyboard.tsx # Keyboard visualization
β β βββ Stats.tsx # Statistics display
β β βββ ErrorBoundary.tsx
β βββ config/
β β βββ layouts/ # Keyboard layout definitions
β βββ utils/ # Utility functions
β β βββ Generator.ts # Text generation
β β βββ SoundManager.ts
β β βββ translations.ts
β β βββ ...
β βββ types/ # TypeScript type definitions
β βββ App.tsx # Main app component
βββ e2e/ # End-to-end tests
βββ public/ # Static assets
βββ dist/ # Build output
- React 19.2 - UI framework
- TypeScript 5.9 - Type safety
- Vite 7.2 - Build tool and dev server
- Tailwind CSS 4 - Styling
- Playwright - E2E testing
- Lucide React - Icons
# Lint code
npm run lint
# Type check
npm run buildWe welcome contributions! Please see CONTRIBUTING.md for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with React and Vite
- Icons by Lucide
- Styling with Tailwind CSS
- Live Demo: https://blind-typing-tutor.wordmemo.net/
- Issues: GitHub Issues
- Discussions: GitHub Discussions
If you find this project helpful, consider:
- β Starring the repository
- π Reporting bugs
- π‘ Suggesting features
- π Improving documentation
- β Buying me a coffee
Made with β€οΈ by Stanislav Khatko