typomat

module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 30, 2025 License: MIT

README

typomat: turn your code into muscle memory

typomat is a command-line typing practice tool that creates exercises from the contents of your repository — perfect for a quick warmup before work.

typomat demo

Features

  • ⌨️ Typing practice focused on code vocabulary
  • 📂 Works with any local folder containing text files
  • 🖥️ Sleek text-based UI that fits comfortably in your terminal
  • 📊 WPM and accuracy metrics to help track your progress
  • 🙈 .gitignore-aware; no sensitive data is ingested
  • 💾 Caching to load your favorite codebases in no time

How it works

When invoked, typomat runs through a directory's source code, extracting words from variable declarations, string literals and function signatures. These words are then used to build short, randomized typing prompts relevant to your codebase.

Installation

Windows

Install via Scoop:

scoop bucket add vupdivup https://github.com/vupdivup/scoop-bucket
scoop install typomat
Linux/MacOS

Install via Homebrew:

brew tap vupdivup/tap
brew install typomat
Pre-built binaries

Pre-built binaries are archived under the latest release.

Go

Use the Go toolchain to build from source:

go install github.com/vupdivup/typomat/cmd/typomat@latest

Usage

Run typomat without any arguments to practice on the current directory.

typomat

To use a different source, provide a local path for the program.

typomat path/to/dir

Directories

Path Synopsis
cmd
typomat command
internal
config
Package config provides configuration logic and constants for the application.
Package config provides configuration logic and constants for the application.
data
Package data provides functions to interact with the underlying database.
Package data provides functions to interact with the underlying database.
domain
Package domain implements the core business logic of the application.
Package domain implements the core business logic of the application.
ui
ui provides a text-based user interface (TUI) for the application.
ui provides a text-based user interface (TUI) for the application.
pkg
alphabet
Package alphabet provides various rune slices for the English alphabet.
Package alphabet provides various rune slices for the English alphabet.
files
Package files provides utility functions for file and directory operations.
Package files provides utility functions for file and directory operations.
git
Package git provides utilities for interacting with Git repositories.
Package git provides utilities for interacting with Git repositories.
metrics
metrics calculates various typing metrics.
metrics calculates various typing metrics.
random
Package random provides utilities for randomization tasks.
Package random provides utilities for randomization tasks.
random/lazy
Package lazy provides lazy random sampling utilities.
Package lazy provides lazy random sampling utilities.
text
Package text provides utility functions for string manipulation.
Package text provides utility functions for string manipulation.
tokenizer
tokenizer can be used to split strings into lexical tokens.
tokenizer can be used to split strings into lexical tokens.
utils
bench command
prof command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL