A full-stack typing speed test application built with FastAPI & Vanilla JavaScript
π Live Demo β’ π Quick Start β’ π Project Structure β’ πΉοΈ How to Use β’ π€ Contributing β’ π License
A fast and responsive WPM (Words Per Minute) Typing Test web app built using Flask, FastAPI, and a static frontend. This project helps users measure their typing speed, accuracy, and consistency in real time with a smooth and minimal interface.
Designed for performance and simplicity, the app delivers instant feedback while maintaining a lightweight backend powered by modern Python frameworks.
Whether you're practicing typing or benchmarking your speed, this tool provides a clean and efficient experience.
π‘ Live Demo: WPM SpeedType Program
| Feature | Description |
|---|---|
| β‘ Real-time Feedback | Instant highlighting of correct/incorrect characters |
| π WPM Tracking | Live Words Per Minute calculation |
| π― Accuracy Score | Track your typing accuracy as a percentage |
| β±οΈ 60-Second Timer | Race against the clock to improve your speed |
| π² Random Text | Fresh typing content fetched from the backend API |
| π Easy Restart | One-click restart with new random text |
| π» Interactive UI | Smooth, responsive typing experience |
| π± Mobile Friendly | Works on desktop and mobile devices |
wpm-typing-test/
β
βββ api/
β βββ tutorial.py # FastAPI backend & text generation
β
βββ static/
β βββ index.js # Frontend logic (typing detection, scoring)
β βββ index.css # Styling & animations
β
βββ templates/
β βββ index.html # HTML template
β
βββ text.txt # Text corpus for random text generation
β
βββ requirements.txt # Python dependencies
βββ vercel.json # Vercel deployment configuration
βββ preview.png # App preview screenshot
βββ LICENSE # MIT License
βββ README.md # This file
- Python 3.11+ installed
- Git installed
- A modern web browser
git clone https://github.com/Blue-Rangoon/wpm-typing-test.git
cd wpm-typing-test# Windows
python -m venv venv
venv\Scripts\activate
# macOS / Linux
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtuvicorn api.tutorial:app --reloadNavigate to: http://127.0.0.1:8000
- Start Typing β Begin typing the displayed text when ready
- Watch Real-time Feedback β Green for correct, red for incorrect
- Track Your Stats β See WPM and accuracy update as you type
- Complete the Test β Timer runs for 60 seconds
- Restart β Click "New Text" to try again with fresh content
| Key | Action |
|---|---|
Tab |
Restart / New Text |
Escape |
Reset current test |
| Method | Endpoint | Description |
|---|---|---|
GET |
/ |
Render the main typing test page |
GET |
/get-text |
Returns a random text for typing |
{
"text": "Practice makes progress."
}Deploy your own instance in just a few steps:
- Fork this repository
- Go to Vercel
- Import your forked repository
- Vercel auto-detects FastAPI β deploy!
Live Demo: https://wpm-typing-python.vercel.app
- Multiple time options (30s, 60s, 120s)
- Different text categories (programming, quotes, paragraphs)
- Historical results tracking
- Leaderboard
- Custom text input
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a new branch (
git checkout -b feature/amazing-feature) - Make your changes
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- π Report bugs
- π‘ Suggest new features
- π§ Improve documentation
- β‘ Optimize code
- π¨ Enhance UI/UX
This project is licensed under the MIT License β see the LICENSE file for details.
