Skip to content

⌨️ A full-stack SPA typing trainer for touch-typing. Generates random lessons by language/count. Final test uses multiple text sources: AI (cloud/local), seeded database, or custom files. Features: virtual keyboard, error highlighting, progress tracking, and statistics.

License

Notifications You must be signed in to change notification settings

mezentsevs/typing-trainer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Typing trainer

Note on Future Development

Please be aware that this project might transition to a commercial subscription-based service for advanced features in the future. While currently open-source, contributions are not actively encouraged at this stage. Plans may change based on further development. Thank you for your understanding.

About 'Typing trainer'

This is a typing trainer, written in and for educational and demonstrational purposes.

A full-stack SPA typing trainer for mastering touch-typing. It generates random lessons based on language and count. The final test sources text through multiple strategies: genre-based AI generation using cloud or local models, a seeded database, or user-uploaded files. Features include a virtual keyboard, real-time error highlighting, progress tracking, and detailed statistics.

Based on tech stack:

Key Features

Adaptive Lesson Generation with Progressive Difficulty

Dynamically creates typing lessons tailored to each supported language, intelligently sequencing characters, alternating vowels and consonants, and using special characters in context. The system automatically adjusts lesson length and complexity based on user progress, ensuring an optimal learning curve from beginner to advanced levels.

Intelligent Keyboard Visualization with Multi-Layout Support

Displays an on-screen keyboard with smart highlighting for the next key press, including necessary modifier keys. Supports multiple language layouts and visually distinguishes hand zones to build proper muscle memory and technique.

Real-Time Interactive Typing Feedback & Performance Analytics

Provides live character-level validation with visual distinction between correct, incorrect, and upcoming text. Tracks real-time statistics including typing speed (WPM), error count, elapsed time, and completion percentage, with a dynamic progress bar.

AI-Powered Content & Extensible Text Generation Strategies

Generates practice content using multiple strategies: AI models (local/cloud), database samples, or user-uploaded text. Built on a modular strategy pattern for seamless switching between sources based on availability and user preference.

Comprehensive Multi-Language Support

Native support for multiple languages with dedicated character sets, frequency tables, and intelligent text normalization. The system's architecture ensures authentic typing experiences through proper encoding conversion and language-specific formatting rules.

Structured Progress Tracking & Lesson Progression

Tracks detailed statistics for lessons and tests (WPM, errors, time). The built-in lesson system gradually introduces new characters while reinforcing learned keys, with a final test option for genre-based or custom text practice.

Intuitive User Interface with Interactive Elements

Clean, responsive design with light/dark theme support, character-level error highlighting, word focus indication, smooth auto-scrolling, and a collapsible keyboard.

Extensible & Maintainable Architecture

Features a clean separation of concerns using service providers, orchestrators, and strategy patterns. Modular design allows easy integration of new text sources, languages, or features while maintaining system stability.

Secure User Authentication & Data Management

Full user authentication with registration/login and token-based API authorization. User progress is securely saved and managed via protected routes.

Getting Started

  • Clone the repository:
git clone [repository-url]
  • Change directory to project:
cd /path/to/typing-trainer/
  • Install php dependencies:
composer install
  • Create .env file:
cp .env.example .env
  • Generate application key:
php artisan key:generate
  • Run Docker Desktop (with wsl - for Windows only)

  • Run wsl (for Windows only):

wsl
  • Run Sail:
./vendor/bin/sail up
  • Add new tab in terminal and connect to container:
docker exec -it typing-trainer-laravel.test-1 bash
  • Install php dependencies (optional, if missing some required php extension in base system):
composer install
  • Run migrations:
php artisan migrate
  • Install node dependencies:
npm install
  • Build project:
npm run build
  • Configure your AI model in .env (tested with LM Studio + qwen/qwen3-1.7b)

  • Configure your custom AI text generation prompt template or delete it from .env for using default

  • In browser go to http://localhost/

  • Register new user on http://localhost/register (enter your name, email, password)

  • Or you can seed database with user (name: Test User, email: test@example.com, password: password) and default texts for final tests:

php artisan migrate:fresh --seed

That's it! Thank you!

Screenshots

2025-07-31_23-19-20 2025-07-31_23-19-42 2025-07-31_18-46-38 2025-07-31_18-47-18 2025-11-05_17-45-59 2025-11-05_18-13-54 2025-07-31_18-50-33 2025-07-31_18-51-37 2025-07-31_23-47-00 2025-07-31_23-47-16 2025-07-31_23-49-14 2025-07-31_23-49-44 2025-07-31_19-06-21 2025-07-31_19-06-53 2025-07-31_19-08-42 2025-07-31_19-09-09 2025-07-31_19-09-31 2025-07-31_19-09-53 2025-07-31_23-55-56 2025-07-31_23-56-21 2025-07-31_19-26-42 2025-07-31_19-27-36

License

The 'Typing trainer' is open-sourced software licensed under the MIT license.

Third-Party Licenses

This project uses third-party software components. Their respective licenses can be found in the LICENSE-3rd-party.md file.

About

⌨️ A full-stack SPA typing trainer for touch-typing. Generates random lessons by language/count. Final test uses multiple text sources: AI (cloud/local), seeded database, or custom files. Features: virtual keyboard, error highlighting, progress tracking, and statistics.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published