I built a free typing trainer with a 30-day structured program — TypeFast

javascript dev.to

TL;DR: I built TypeFast — a free web-based typing trainer that actually teaches you, not just tests your speed. 30-day program, race mode, daily challenges. French-first, works in English too. No download, no account needed to start.


Most typing tools just measure how slow you are. They don't teach you.

I got tired of that, so I built TypeFast — a structured 30-day program that builds real muscle memory, with gamification to keep it fun.

What it does

  • 30-day structured program: 2 short exercises per day (~10 min total). Each day introduces new keys and drills them until they're automatic. No "figure it out yourself" — it's a guided path.
  • Race mode: Real-time typing races against other users. Competitive, fast-paced, way more engaging than solo tests.
  • Daily challenge: Unique text every day with community rankings. Keeps you coming back.
  • Error heatmaps: See exactly which keys slow you down. Finger-by-finger analytics.
  • French + English: Most tools are English-only. TypeFast is French-first (full French texts, UI in French), but works in English too.

Why I built it

I'm a systems engineer at Thales. I type 8+ hours/day. I noticed most of my colleagues hunt-and-peck their way through work — not because they don't care, but because they never learned.

Monkeytype is great for testing speed, but it doesn't teach. TypingClub is too kid-focused. Keybr's adaptive algo is clever but intimidating for beginners.

I wanted something in between: structured enough for beginners, competitive enough for enthusiasts, French enough for francophones.

Tech stack

  • Frontend: React (SPA, no server-side rendering — the homepage is basically just the app shell)
  • Backend: Firebase (Firestore for leaderboards + progress tracking, Auth for optional accounts)
  • Hosting: Render
  • Cost: ~€0/month so far (Firebase free tier + Render free tier)

Current state

Beta. Functional, but rough around the edges:

  • Pro tier (€4.99/mo) is listed but not live yet
  • No social proof (no user counts, no testimonials)
  • No community (no Discord, no Twitter presence)
  • Race mode works but lobby is often empty (chicken-and-egg problem)

I'm currently at ~12 active users (friends + Reddit testers). The product works; distribution is the bottleneck.

What I learned

  1. Building is the easy part. Getting users is 10x harder. I spent 3 months on the product, 0 days on marketing. That was a mistake.
  2. Free tier has to be good, but not too good. Right now, free users get almost everything. The Pro upsell ("advanced analytics") is weak. I should've gated unlimited races or full history behind the paywall from day one.
  3. French-first is both a wedge and a ceiling. It's a defensible niche (most competitors are English-only), but it caps my addressable market unless I go multilingual fast.
  4. No account-needed onboarding = high bounce, but also high trial rate. People try it fast, but don't stick because there's no investment. I'm A/B testing "skip login" vs. "quick OAuth" now.

What's next

Short-term (this week):

  • Submit to AlternativeTo, Product Hunt (3-week runway), Reddit (r/learnprogramming, r/typing, r/france)
  • Add a "share your speed" button (auto-generates a shareable image) — free viral loop
  • Fix the empty race lobby problem (add bot opponents with realistic speeds until real users show up)

Medium-term (next month):

  • Launch Pro tier (even if features are basic — I need to test willingness to pay)
  • Add B2B features (teacher dashboards, team progress tracking) and cold-email French coding bootcamps
  • Build a Discord + start posting on Twitter

Long-term:

  • Multilingual (Spanish, German, Italian — not just UI, but texts + leaderboards per language)
  • Mobile app (PWA first, then native if traction is real)
  • Enterprise (company site licenses for onboarding/training)

Try it

👉 typefast.fr

No download, no account needed to start. Takes 60 seconds to try the speed test. If you like it, the 30-day program is waiting.

I'd love feedback — what's good, what's broken, what would make you actually use it for 30 days straight?


Questions I'm happy to answer:

  • How did you build the race mode? (WebSockets + Firebase Realtime Database)
  • Why Firebase and not Supabase/PlanetScale/etc.? (Firebase free tier is very generous for MVP scale, and Firestore's real-time listeners are perfect for races)
  • Are you making money? (No. €0 revenue so far. Pro tier isn't live yet.)
  • What's your biggest regret? (Not launching publicly sooner. I should've posted on Reddit / HN 2 months ago when the MVP was done.)

Drop a comment if you have questions or want to roast the product. I'm here.

Source: dev.to

arrow_back Back to Tutorials