Files
2026-07-13 11:58:24 +08:00

77 lines
3.1 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.
- [ ] Users **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)