Case study
TypingBolt
AI-Powered Typing Practice Platform
Role
Scope
Stack
Live
What I built.
- 01
Took TypingBolt from an AI-built prototype to a live product on my own, removing every Base44 dependency (logins, AI, model choice and data storage) so the product owns its code and data.
- 02
Wrote a new backend from scratch for users, typing tests, mistakes and leaderboards.
- 03
Rebuilt sign-up and login, with email verification, password reset, and Google and Facebook sign-in.
- 04
AI practice paragraphs built around the words each user gets wrong most, in three modes; the server picks the cheapest suitable model and falls back automatically if one fails.
- 05
Moved the old site’s users, test history and rankings across, so its roughly 50,000 learners and 11 million+ tests came with it.
- 06
Added downloadable PDF certificates, daily, weekly and all-time leaderboards, five skill levels, and limits that block abuse.
- 01
Express 5 and TypeScript API on MongoDB with a controller and module structure, and a React 18 frontend on RTK Query.
- 02
Own auth: an AES-encrypted session token in a signed, httpOnly, SameSite=strict cookie; Firebase ID tokens verified server-side for social login, linking several providers to one user.
- 03
AI proxy through a custom OpenRouter client with strict JSON-schema output, tolerant parsing and an ordered fallback list sorted by price; a local generator covers AI outages.
- 04
Streaming migration of the legacy MySQL data with stream-json and batched unordered inserts, recomputing levels and scores with the same function the live app uses.
- 05
Certificates drawn with node-canvas and wrapped as A4 PDFs with PDFKit, served only to their owner with strict security headers.
- 06
express-rate-limit on login, registration, emails, test submissions and leaderboards; Joi validation on every request body.