You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
app-ideas/Projects/1-Beginner/Typing-Speed-Test-App

77 lines
3.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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)