explaingit

hase9awa/termtypist

19RustAudience · developerComplexity · 2/5LicenseSetup · moderate

TLDR

An offline terminal typing speed trainer inspired by Monkeytype, with timed and word-count test modes, local SQLite progress tracking, a keyboard heatmap, and support for custom word lists.

Mindmap

mindmap
  root((repo))
    What it does
      Typing tests
      Tracks progress
      Keyboard heatmap
    Test modes
      Timed
      Word count
      Quotes
      Custom text
    Tech stack
      Rust
      SQLite
    Audience
      Developers
      Terminal users
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Run timed or word-count typing speed tests in the terminal without opening a browser or requiring internet access.

USE CASE 2

Track personal best WPM over time and view progress charts stored in a local SQLite database on your machine.

USE CASE 3

Use the keyboard heatmap view to identify slow or error-prone keys and focus custom practice sessions on them.

USE CASE 4

Load a custom text file as practice content for domain-specific vocabulary or foreign language typing.

Tech stack

RustSQLite

Getting it running

Difficulty · moderate Time to first run · 30min

Arch Linux users can install via AUR in one command, all other platforms must build from source using the Rust Cargo toolchain.

GPL-3.0, use and modify freely, but any distributed version must also be released under GPL-3.0 with source code available.

In plain English

termtypist is a typing speed trainer that runs entirely inside a terminal window. It was inspired by the popular web app Monkeytype but is designed to work offline, locally on your computer, without opening a browser. The README is bilingual, with sections in Russian and English. You can practice typing in several modes: a timed test (type as much as you can in 30 or 60 seconds), a word-count test (type a set number of words), typing out quotes, or using your own custom text file. English and Russian word lists are built in, and you can add your own dictionaries in plain text or JSON format. Results are stored locally in a SQLite database, so you can track your personal bests and see charts of your progress over time. There is also a keyboard heatmap view that shows which keys you hit slowly or incorrectly. The app is fully keyboard-driven. You press Tab to restart a test, Escape to pause, Alt+T to switch to timed mode, and so on. Mouse support exists for a few things, but nothing requires a mouse. You can switch visual themes, toggle punctuation or numbers in your tests, and export or import your settings as a config file. Installing on Arch Linux is a single command via the AUR package manager. On other systems you build it from source using Cargo, the Rust build tool. All user data stays on your machine under a standard config folder. The project is licensed under GPL-3.0.

Copy-paste prompts

Prompt 1
I cloned termtypist and want to add a French word list. Where do I put the file and how does the app discover new dictionary packs at startup?
Prompt 2
Help me add a new test mode to termtypist that reads sentences from a user-provided CSV file and presents them one at a time.
Prompt 3
I want to export my termtypist SQLite results to a CSV file. Write the Rust code to query the results table and write each row to stdout.
Prompt 4
termtypist tracks WPM and accuracy. Help me add per-key latency tracking so the database records how long each keypress takes and I can see my slowest keys.
Open on GitHub → Explain another repo

← hase9awa on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.