# flinttype > Free open-source typing speed test and WPM trainer. Measure your typing speed, fix your weakest letter pairs with adaptive drills, and race friends or bots online. Built on Next.js + shadcn with a typed `useBackend()` client, Drizzle on Neon, and Clerk auth. ## Pages - [Home](/): the typing practice surface — start typing to begin a test, switch modes (words / time / quote) at the top - [About](/about): what flinttype is, who it's for, and the adaptive-drills story - [Leaderboard](/leaderboard): global top WPM and net-WPM scores across modes - [Race](/race): multiplayer races against bots or friends; private challenge links shareable per lobby - [Drills](/drills): targeted drills (burst, pangram, top-100, sudden death, worst words) - [Insights](/insights): per-user weakness ranking + WPM history (requires sign-in) - [Customise](/customise): theme, typography, caret, keyboard, layout, multiplayer - [Blog](/blog): notes on typing, adaptive practice, and engineering behind flinttype - [Changelog](/changelog): curated release notes — features, fixes, policy updates - [FAQ](/faq): common questions about accounts, WPM math, the adaptive engine, supported layouts - [Privacy](/privacy): plain-language policy — what's collected, why, and how to delete it - [Terms](/terms): MIT-licensed terms of use and fair-use guidelines ## Conventions - [Backend rules](/docs/backend-rules.md): 12-rule guide for adding backend code — types, Zod, middleware, errors, logging, tests - [UI Law](/docs/ui-law.md): design conventions (colors, spacing, typography, layout, backend integration) - [File organization](/docs/organization.md): length thresholds and decision table for where new files go - [SEO rules](/docs/seo.md): per-page metadata, semantic HTML, `llms.txt` sync - [Auth](/docs/auth.md): Clerk integration, `requireAuth` middleware, session claims - [Database](/docs/database.md): two-tier Drizzle layer (Neon server / PGlite dev) ## Optional - [README](/README.md): quick start and architecture overview