Skip to main content

Console touch-typing trainer with gamification

Project description

████████╗██╗   ██╗██████╗ ███████╗██╗  ██╗███████╗██████╗  ██████╗
╚══██╔══╝╚██╗ ██╔╝██╔══██╗██╔════╝██║  ██║██╔════╝██╔══██╗██╔═══██╗
   ██║    ╚████╔╝ ██████╔╝█████╗  ███████║█████╗  ██████╔╝██║   ██║
   ██║     ╚██╔╝  ██╔═══╝ ██╔══╝  ██╔══██║██╔══╝  ██╔══██╗██║   ██║
   ██║      ██║   ██║     ███████╗██║  ██║███████╗██║  ██║╚██████╔╝
   ╚═╝      ╚═╝   ╚═╝     ╚══════╝╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝ ╚═════╝

PyPI Python License: MIT Built with Textual

A touch-typing trainer that lives in your terminal — a typing course turned into a game you actually want to finish.

Work through a course of lessons, one unlocking the next. Each lesson is gated on speed and accuracy, so you can't sprint past the basics — you earn your way forward. Along the way you rack up XP, climb levels, chase achievements, keep a daily streak alive, and build combos for every key you hit without a typo.

The trainer ships with full English and Russian courses. Your typing language and your menu language are independent — practise Russian text with an English interface, or the other way round.

Quick start

You'll need Python 3.13+. The fastest way in — no install, no cleanup:

uvx typehero

That downloads and runs the latest version in a throwaway environment. (uv is a tiny, fast Python tool runner — brew install uv or see their site.)

Want it to stick around as a real command on your PATH?

uv tool install typehero    # or: pipx install typehero
typehero                    # then just type this anytime

Prefer plain pip into an existing environment? pip install typehero works too — everything it needs (the courses, the interface) comes bundled in.

How to play

  1. Pick a lesson. The menu is your dashboard: completed lessons are marked, locked ones are greyed out until you clear the one before.
  2. Take the benchmark (optional but recommended). Before your first lesson, typehero offers a short speed test so it knows where you're starting from. Press b anytime to retake it.
  3. Type the text in front of you. Live stats show your speed, accuracy, and current combo as you go. Pasting is blocked — this is about your fingers, not your clipboard.
  4. Beat the bar. Clear a lesson by hitting both its target speed and its accuracy threshold. Miss either one and you can retry as many times as you like.
  5. Watch the numbers climb. Every clear awards XP (more for clean, fast, first-time runs), pushes your level, and may unlock an achievement.

Keys on the menu

Key What it does
b Take or retake the speed benchmark
p View your progress — level, XP, stats
a Browse achievements, locked and unlocked
s Settings — switch course or menu language
q Quit

What you're chasing

  • 20 achievements across four themes — speed milestones (40 → 100 WPM), accuracy (95% → flawless), combos (25 → 100 keys in a row), and streaks (3 → 30 days).
  • Levels & XP on a rising curve, so each level takes a little more than the last.
  • Daily streaks that count calendar days — show up every day to keep the chain.
  • Combos that build with every correct key and reset the moment you slip.

Your save file

Your profile lives as a small JSON file under $XDG_CONFIG_HOME (or your platform's default config folder). It's yours — back it up, move it between machines, peek inside. If it ever gets corrupted, typehero backs up the broken copy rather than throwing it away, then starts you a fresh one.

License

MIT. Free to use, free to fork.


Curious how it's built, or want to contribute? The architecture, conventions, and development workflow are documented in CLAUDE.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

typehero-1.1.0.tar.gz (43.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

typehero-1.1.0-py3-none-any.whl (66.4 kB view details)

Uploaded Python 3

File details

Details for the file typehero-1.1.0.tar.gz.

File metadata

  • Download URL: typehero-1.1.0.tar.gz
  • Upload date:
  • Size: 43.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for typehero-1.1.0.tar.gz
Algorithm Hash digest
SHA256 a6554ff0e0943dce4390d37a939c9d58f854e5a5cadb950c4ffa3d749fe3459c
MD5 0a6215f1343141c41e74a6d6f9664696
BLAKE2b-256 1dff51bc9194bbde87c6426f80ee3264f2cdc74dcfb0d190f85921aa8634c50b

See more details on using hashes here.

Provenance

The following attestation bundles were made for typehero-1.1.0.tar.gz:

Publisher: release-please.yml on agolosnichenko/typehero

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file typehero-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: typehero-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 66.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for typehero-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bcc1499c7f0799e80f27b5c8854517eb7969d7c5d5016d9adb59988df06dcf4b
MD5 d6902d62df08008e2ee267ea885b7e32
BLAKE2b-256 ad72f4f7982d53bfbe00fa092c92dbe4fe2307c8dc13abb6703a6a279321bebc

See more details on using hashes here.

Provenance

The following attestation bundles were made for typehero-1.1.0-py3-none-any.whl:

Publisher: release-please.yml on agolosnichenko/typehero

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page