npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@sethwebster/typehero

v0.1.1

Published

Terminal typing trainer focused on accuracy with constraint-based guided practice

Downloads

228

Readme

TypeHero

Terminal typing trainer focused on accuracy first, with data-driven practice targeting your specific problem areas.

Philosophy

  • Accuracy > Speed: Raw WPM is meaningless without accuracy
  • No escape hatches: Can't skip hard exercises or hide mistakes
  • Data-driven: Every keystroke tracked, analyzed, and used to generate targeted practice
  • Immediate feedback: Real-time visual indicators for every character
  • Adjusted WPM: Primary metric = raw WPM × accuracy²

Features

  • Real-time feedback: See mistakes instantly as you type
  • Bigram tracking: Identifies your slowest character pairs
  • Error analysis: Tracks most error-prone keys
  • Targeted practice: Auto-generates exercises from your problem areas
  • Persistent stats: All sessions saved to SQLite database ~/.typehero.db
  • Multiple modes:
    • Random words (common English)
    • Code patterns (programming constructs)
    • Targeted drills (your problem bigrams)
    • Quick practice (20 words)

Installation

npm (recommended)

npm install -g @sethwebster/typehero

Or run without installing:

npx @sethwebster/typehero

Shell Installer (macOS/Linux)

curl -sSL https://github.com/sethwebster/typehero/releases/latest/download/typehero-installer.sh | sh

Cargo

cargo install typehero

From Source

cargo install --path .

Uninstallation

curl -sSL https://github.com/sethwebster/typehero/releases/latest/download/uninstall.sh | sh

Or manually:

  • npm: npm uninstall -g @sethwebster/typehero
  • cargo: cargo uninstall typehero
  • shell installer: Remove binary from ~/.local/bin/typehero or ~/.cargo/bin/typehero

Usage

Launch the app and select a mode:

  1. Guided Practice - Constraint-based finger placement training
    • Teaches through constraints, not detection: Only keys from active fingers are accepted
    • Progressive finger unlocking: Index → Middle → Ring → Pinky → Thumbs
    • ASCII keyboard map shows active fingers in color (inactive keys greyed out)
    • Illegal keys rejected (cursor doesn't advance) - shapes motor memory through negative capability
    • 3-2-1 countdown before each attempt (no Enter key friction)
    • Tracks illegal key violations + accuracy per attempt
    • Mastery = 3 consecutive attempts at 95%+ accuracy with 0 illegal keys
    • Auto-advances when lesson mastered
    • Navigate: Ctrl-N (next lesson), Ctrl-P (previous lesson)
  2. Random Words - Practice common English words
  3. Code Patterns - Programming-specific patterns
  4. Targeted Practice - Auto-generated from your slowest bigrams
  5. Quick Drill - Short 20-word session
  6. View Statistics - See lifetime stats and problem areas
  7. Quit

During Practice

  • Type exactly what you see
  • No backspace - mistakes stay visible
  • ESC to quit (you'll get a reminder to push through if quitting early)
  • Session ends when you complete the text

Metrics

  • Raw WPM: (characters / 5) / minutes
  • Accuracy: (correct_chars / total_chars) × 100
  • Adjusted WPM: Raw WPM × (accuracy/100)²

Example: 60 WPM at 90% accuracy = 60 × 0.81 = 48.6 adjusted WPM

Rules

  1. No backspace - Forces correct typing first time
  2. 95% accuracy target - Anything less = needs improvement
  3. Stats never reset - Own your progress

Tips for Improvement

  1. Slow down - Speed comes from accuracy, not rushing
  2. Focus on problem bigrams - Use targeted practice mode
  3. Watch the current character - It's highlighted in blue
  4. Don't look at your hands - Force muscle memory
  5. Consistent practice - 15 minutes daily > 2 hours weekly

Stats Location

All statistics are saved to ~/.typehero.db (SQLite database)

Tables:

  • sessions: Session summaries (timestamp, WPM, accuracy)
  • metadata: Total keystrokes and errors
  • key_errors: Per-key error counts
  • bigrams: Aggregated bigram timing data with rolling averages

Migration: Legacy JSON stats (~/.typehero_stats.json) are automatically imported on first run

Architecture

See AGENTS.md for detailed architecture and design principles.