Skip to content

stanhatk/blind-typing-tutor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

33 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Blind Typing Tutor ⌨️

Blind Typing Tutor License TypeScript React Vite

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

πŸ“– About

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.

Why Blind Typing Tutor?

  • 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

✨ Features

🎯 Core Features

  • 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

🌍 Internationalization

  • 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

🎨 User Experience

  • Dark/Light mode toggle
  • Responsive design (mobile-friendly)
  • Auto-advance to next phrase
  • Correction mode (prevents typing errors)
  • Customizable settings
  • Persistent preferences (localStorage)

πŸš€ Installation

Prerequisites

  • Node.js 18+ and npm/pnpm/yarn
  • Modern web browser (Chrome, Firefox, Safari, Edge)

Quick Start

  1. Clone the repository

    git clone https://github.com/stanislavkhatko/blind-typing-tutor.git
    cd blind-typing-tutor
  2. Install dependencies

    npm install
    # or
    pnpm install
    # or
    yarn install
  3. Start development server

    npm run dev
  4. Open in browser

    http://localhost:5173
    

Build for Production

# Build the project
npm run build

# Preview production build
npm run preview

πŸ“š Usage

Basic Usage

  1. Select your keyboard layout from the dropdown in the header
  2. Choose learning mode (Practice, Beginner, or Custom)
  3. Select learning language for the content you want to practice
  4. Start typing - the app will track your progress automatically
  5. Review statistics - WPM, accuracy, and errors are displayed in real-time

Advanced Features

  • 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

Keyboard Shortcuts

  • Type directly to start practicing
  • The input field auto-focuses for immediate typing

πŸ§ͺ Testing

Run E2E Tests

# 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=chromium

Install Playwright Browsers

If tests fail due to missing browsers:

npx playwright install

πŸ› οΈ Development

Project Structure

blind-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

Tech Stack

  • 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

Code Quality

# Lint code
npm run lint

# Type check
npm run build

🀝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for details.

Quick Contribution Guide

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

πŸ“Š Project Status

GitHub stars GitHub forks GitHub issues GitHub pull requests

πŸ”— Links

πŸ’¬ Support

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

⬆ Back to Top

About

Blind Typing Tutor - Free Online Touch Typing Trainer

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

6 stars

Watchers

1 watching

Forks

Sponsor this project

Packages

 
 
 

Contributors