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.0.0.tar.gz (40.9 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.0.0-py3-none-any.whl (63.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for typehero-1.0.0.tar.gz
Algorithm Hash digest
SHA256 81629407b4e9a12882788d541398bc9003625efd93030492aa91d6df0af35f84
MD5 4d59e358d6ed1d942456697b75be3b55
BLAKE2b-256 be2bf12b3929c49423273c023571cd2eba9041ca60869618eca6597d16a069fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for typehero-1.0.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.0.0-py3-none-any.whl.

File metadata

  • Download URL: typehero-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 63.0 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.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 24bc35b1ece1b5977268c589b575aca328bcba121a6e2f6bd208bb8a3f5d1fce
MD5 39b9fafa89a67b787676461e3d24f9f2
BLAKE2b-256 b4dd6f93e16bc21f53c696cf9dbd7eecabeb41b952a2a116e859e2d2df26177c

See more details on using hashes here.

Provenance

The following attestation bundles were made for typehero-1.0.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