TypeLeague
TypeLeague turns a single typing test into many competitions at once. Instead of only answering "how fast can I type?", every run also answers "how fast is my school, my company, my city, my country?" — one result ranks you globally and against each of those, so every test is a race on multiple fronts. Affiliations are verified by email, team standings are protected by server-side scoring and anti-cheat signals, and weekly seasons roll over automatically on a FastAPI service with Redis-powered leaderboards.
What it does
- One typing test simultaneously feeds global, country, city, school, and company leaderboards
- Multiple race formats: Sprint (15s), Standard (30/60s), and Marathon (120s) with real-time WPM and accuracy
- Verified affiliations — school and company email OTP with MX-record checks, so official team rankings only count real members
- Team scoring by the average WPM of an organization's top verified members, rather than gameable single-user averages
- Weekly seasons that reset rankings automatically while preserving historical results
- Anti-cheat — server-side scoring plus copy/paste, autofill, and burst-speed signals that flag suspicious sessions for review
- Punctuation mode serves unmodified literary passages (classics and Wikipedia excerpts) instead of normalized word lists
- Multi-language practice across several Latin-script languages plus Korean (IME-aware)
- Auto-generated share cards for X, LinkedIn, Reddit, and Discord
- Admin dashboard for affiliation verification, session-flag review, organization de-duplication, and reversible bans, with an audit log — plus distinct-human detection that clusters suspected duplicate accounts for review only, never auto-penalizing
- Accounts, profiles, and privacy controls (hide or remove a verified affiliation) with Clerk auth
Tech stack
Next.js 14 (App Router) with React 18, TypeScript, Tailwind CSS, and shadcn/ui on the frontend. FastAPI (Python) backend with SQLAlchemy 2.0 and Alembic, PostgreSQL 17 for persistence, and Redis for real-time leaderboard ranking. Clerk handles authentication, Amazon SES sends affiliation OTP email, and APScheduler runs the weekly season rollover and team-score recompute in-process. The frontend deploys on Vercel; the backend and managed Postgres/Redis run on Railway.