Skip to content

ashish0kumar/typtea

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

typtea

stars   Releases   LICENSE  

Minimal terminal-based typing speed test with support for dozens of programming languages


Features

  • Terminal-based typing with WPM and accuracy tracking
  • Multi-language support including English and 30+ programming languages
  • Infinite word generation with smooth 3-line scrolling display
  • Minimalist TUI built with Bubble Tea and Lipgloss
  • Embedded language data for easy distribution
  • Accurate metrics following standard typing test calculations

Supported Languages

Bash C C++ C#
Crystal CSS Emacs English 1k
Erlang Go Haskell HTML
Java JavaScript JSON Julia
Lisp Lua OCaml Perl
PHP PowerShell Python R
Ruby Rust SCSS SQL
Swift TeX TypeScript Vala
Vimscript Wolfram YAML Zig

Installation

Arch Linux (AUR)

yay -S typtea

Void Linux

sudo xbps-install -S typtea

Nix

nix profile install nixpkgs#typtea

Via go install

go install github.com/ashish0kumar/typtea@latest

Build from Source

git clone --depth=1 https://github.com/ashish0kumar/typtea
cd typtea/
go build
sudo mv typtea /usr/local/bin/
typtea -h

Usage

Basic Commands

# Start a 30-second English typing test (default)
typtea start

# Start a 60-second typing test
typtea start --duration 60

# Start a Rust keywords typing test
typtea start --lang rust

# Combine duration and language
typtea start --duration 45 --lang javascript

# List all available languages
typtea start --list-langs

# Get help
typtea --help
typtea start --help

During the Test

  • The test starts when you begin typing
  • Backspace to correct mistakes
  • Enter to restart after completion
  • Esc to quit the application

Development

Prerequisites

Go 1.19+

Setup

git clone https://github.com/ashish0kumar/typtea.git
cd typtea
go mod tidy
go build
./typtea start

Adding New Languages

  1. Create a JSON file in internal/game/data/ with the format:
{
  "name": "Language Name",
  "words": ["word1", "word2", "word3", ...]
}
  1. Rebuild the application to embed the new language data

Community Extensions

Looking for persistent stats or a database-backed version of typtea?

Check out PR #1: Database for storing stats, which adds SQLite-based session tracking and best-score display.
This feature is not in the main branch to keep typtea minimal, but you can use it if you want to track your typing history.

Contributing

Contributions are always welcome! If you have ideas, bug reports, or want to submit code, please feel free to open an issue or a pull request.

Dependencies

License

MIT License



About

⌨️ Minimal terminal-based typing speed test

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Contributors 2

  •  
  •  

Languages