KeyFlow
KeyFlow is a typing practice application focused on building real typing proficiency (speed, accuracy, and consistency) without the practice itself feeling like a chore. Multiple typing modes, adjustable difficulty and session length, live WPM and accuracy tracking, a ghost mode that races your own past runs, and deep theme, font, and sound customization are all built around one goal: make consistent typing practice something people actually want to come back to.
Why I Built This
Most typing test sites are functional but forgettable; you type, you get a WPM number, you close the tab. I wanted to build one people would actually want to keep coming back to, where the practice itself is enjoyable enough to build a real habit around.
Ghost mode specifically came from a simple observation: the most motivating opponent in a typing test isn't a stranger's leaderboard score, it's your own last attempt. Racing your own past run makes incremental improvement visible in a way a single WPM number doesn't.
Ghost Mode
Ghost mode replays a previous run stroke-for-stroke alongside a live attempt, so progress is visible in real time rather than only as a before/after number. The goal is to turn typing practice into a personal race instead of a static drill; the same mechanic that makes racing and rhythm games replayable applies just as well here.
Customization as a Core Feature, Not a Settings Menu
Themes, fonts, an optional on-screen keyboard, and mechanical keyboard sound effects are all first-class parts of KeyFlow rather than buried in a preferences panel. The reasoning is simple: a typing practice tool only works if people actually use it consistently, and consistency is a lot easier to sustain in an interface someone genuinely enjoys sitting in front of.
Key Decisions
Typing modes (words, quotes, numbers, punctuation) and difficulty/session-length combinations were designed as independent, composable settings rather than a handful of fixed presets, so practice can be tuned precisely to what someone's actually trying to improve.
Customization (themes, fonts, optional keyboard display, mechanical sound effects) was treated as a core feature rather than a settings-page afterthought, since building a typing habit depends a lot on wanting to spend time in the interface in the first place.
Live WPM and accuracy tracking was built to update on every keystroke rather than only at the end of a run, so improvement feels immediate instead of arriving as a single number after the fact.
What I Learned
Live WPM and accuracy tracking sounds simple until it has to feel instant and accurate at the same time; every keystroke has to be evaluated and reflected in the UI without introducing any perceptible lag, especially at higher typing speeds.
Ghost mode's replay logic ended up being the most interesting problem in the whole build, reproducing a past run stroke-for-stroke alongside a live attempt means timing has to be preserved precisely, not just the sequence of characters typed.