← Back to Selected Work
Full StackYEAR: 2026ROLE: Full Stack Developer

Typing Speed SaaS Platform

A full-stack web application designed to measure, track, and analyze user typing speed, accuracy, and detailed keypress timing metrics.

// TECHNOLOGIES USED
ReactNode.jsExpress.jsMongoDBREST APIJavaScriptCSS3

Project Visual Preview

typing-analytics-engine v1.2
SYSTEM_ONLINE
SPEED (WPM)

94.5

↑ 12% peak
ACCURACY

98.2%

0.4% error rate
KEY LATENCY

18ms

sub-ms listener
KEYPRESS_TIMING_STREAMBURST_MODE
// 01. OVERVIEW

Project Overview

Built with React and Node.js, this application features real-time typing speed calculations (WPM), mistake analysis, keypress timing diagnostics, dynamic test generation, and user performance history.

// 02. PROBLEM & SOLUTION
The Problem

Existing typing tests often lack detailed timing telemetry per keypress and detailed mistake diagnostics needed to help users identify specific finger and key latency weaknesses.

The Solution

Developed an event-driven frontend typing engine paired with a Node.js REST API backend to record character timestamps, compute real-time WPM, and persist test results for historical analytics.

// 03. SYSTEM ARCHITECTURE

System Design & Data Flow

// SYSTEM ARCHITECTURE FLOWHTML/CSS Rendered Flow
LAYER 01

Client Browser (React SPA)

LAYER 02

Typing State Engine (Refs & Event Listeners)

LAYER 03

Express REST API Controller

LAYER 04

MongoDB Aggregation Pipeline

Architectural Highlights
  • Client-Side React SPA with stateful typing engine module
  • Node.js & Express RESTful API with token authentication middleware
  • MongoDB database layer for test results and analytical aggregations
// 04. KEY FEATURES

Core Functionality & Capabilities

Real-time Words-Per-Minute (WPM) & Raw WPM calculation
Character accuracy breakdown and error key heatmap
REST API for persisting test statistics and user history
Custom test duration and snippet difficulty selectors
// 05. TECHNICAL CHALLENGES

Obstacles & Engineering Solutions

Challenge #1: Accurate real-time WPM calculation without causing input lag during high-speed typing bursts.
Solution: Decoupled the timer and state updates from heavy DOM re-renders by storing keypress events in a ref array and using throttled calculations.
Challenge #2: Persisting historical test data efficiently across user sessions.
Solution: Designed indexed MongoDB collections for fast aggregation queries of past test scores and accuracy trends.
// 06. ENGINEERING DECISIONS

Trade-offs & Design Rationale

  • Selected React state refs for raw keystroke timings to prevent unnecessary re-render overhead
  • Implemented RESTful payload validation middleware to sanitize submitted score data
// 07. LEARNINGS & TAKEAWAYS

Personal Growth & Technical Insights

Deepened understanding of browser DOM event loop latency during high-frequency keystrokes
Gained experience in designing database schemas for historical event storage