# Typing Speed Test App **Tier:** 1-Beginner Typing speed tests are a fun and interactive way to measure how fast and accurately you can type. In this project, you'll build a simple **Typing Speed Test App** that displays a random passage for the user to type within a limited time. Once the timer runs out (or the user finishes typing), the app calculates and displays their **typing speed (WPM)** and **accuracy (%).** This project will help you understand **real-time input handling**, **timing events**, and **DOM manipulation** — essential skills for building interactive web apps. ## Features - **Real-time Timer** – Start typing to begin the timer automatically. - **Live Accuracy Check** – Incorrect letters are highlighted instantly. - **Performance Stats** – Get detailed results including Words Per Minute (WPM) and Accuracy (%). - **Restart Option** – Take the test again with a new random passage. - **No External Libraries** – All calculations implemented manually. ## User Stories - [ ] User can see a **random passage** to type on the screen. - [ ] User can start the test by clicking a **Start** button (starts the timer). - [ ] User can see a **typing input area** to type the given text. - [ ] User can view a **countdown timer** showing how much time is left (e.g., 60 seconds). - [ ] User can see their **WPM** and **Accuracy (%)** after finishing or when the timer ends. - [ ] User can click **Restart** to take the test again with a new passage. - [ ] User sees **real-time error highlighting** while typing. ## Bonus Features - [ ] User can select different **time durations** (15s, 30s, 60s, 120s). - [ ] User can choose **difficulty levels** or text lengths. - [ ] User’s **best WPM** is saved locally using `localStorage`. - [ ] **Dark/Light Mode** toggle for better UI experience. - [ ] Live **WPM and Accuracy** tracking while typing. - [ ] **Progress Graphs or History** showing previous scores. ## Constraints - Do not use any third-party libraries for typing speed or accuracy calculations. - Use only front-end technologies like **HTML**, **CSS**, and **JavaScript** (or React if preferred). ## How to Calculate WPM **Words Per Minute (WPM)** = (Total Characters Typed / 5) ÷ (Time in Minutes) **Accuracy (%)** = (Correct Characters / Total Characters Typed) × 100 ## Example UI Inspirations - [Monkeytype](https://monkeytype.com) - [10FastFingers](https://10fastfingers.com) ## Useful Resources - [Typing Test (Wikipedia)](https://en.wikipedia.org/wiki/Typing_test) - [MDN: Keyboard Events](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent) - [How to Calculate WPM](https://www.speedtypingonline.com/typing-equations) ## Example Projects - [Typing Speed Test – Monkeytype Clone](https://monkeytype.com) - [Typing Speed Test (CodePen)](https://codepen.io/rajatkantinandi/pen/PoKyLMy) - [Speed Typing Game – Web Dev Simplified](https://github.com/WebDevSimplified/Speed-Typing-Game) - [Typing Game in React](https://github.com/karlhadwen/typing-game) - [10FastFingers Clone – Vanilla JS](https://codepen.io/joshuaward/full/jObXJZj)