fat-fingers is a typing test with a deliberately rude sense of humor. Its product experience pairs typing modes and performance history with AI-generated roasts.
My implementation focus#
The engineering focus is reliable measurement underneath that presentation. Next.js, React, TypeScript, Recharts, and Zod support the application; Gemini generates the feedback. The metric engine and leaderboard verification are separate from that generated text.
Two different meanings of accuracy#
WPM uses credited correct characters, divided by five characters per word and elapsed minutes. The implementation guards invalid elapsed time instead of returning an infinite score.
The metric engine also distinguishes final text state from press-time accuracy. Correcting a typo can improve the final text while the earlier incorrect keypress still contributes to the press-time denominator. This makes the correction visible in the measurement.
Verify ranked submissions through replay#
The leaderboard verifier accepts a seed, duration, difficulty, and keystroke events. It regenerates the target text and replays the events through the typing reducer, rather than trusting a submitted WPM field.
It checks allowed durations, event ordering, event-count limits, and the ranked time window. Events outside that window cannot earn extra credit. A score bound adds another rejection condition, but it does not prove that every accepted run came from unaided human typing.
Result and evidence limits#
The project demonstrates a deterministic scoring path alongside playful generated feedback. Source tests cover the engine, but this case study does not report a fresh execution of the project's suite or measured user improvement. The public preview provides the interactive product context.
Read the companion article on replaying keystrokes to verify typing scores.
