TypeForge is a browser-based typing practice app with live stats, passage typing, and a visual keyboard.
TypeForge/
├── index.html # App markup
├── styles.css # Styling
├── js/ # Detection logic and UI behavior
├── README.md # Project documentation
└── images/ # Language/logo assets
js/contains:passages.js,state.js,keyboard.js,typing.js,app.js
- Open
index.htmldirectly in your browser. - Or run a local server and open the app from localhost:
python3 -m http.server 8000Then open http://localhost:8000.
- Start typing the shown text.
- Watch live stats: WPM, Accuracy, Time, Errors.
- Use
[ Change Text ]to load a new passage. - Finish the passage to see session results in the popup.
- Use
[ Retry ]to retry or[ New Text ]for another passage.
- Timer starts on first key press.
- Each typed character is checked against the current target character.
- Correct chars are marked green, wrong chars red.
- Live WPM and accuracy are recalculated while typing.
- On completion, final stats are shown in the results modal.
- Best WPM and best Accuracy are saved in
localStorage.
- Dark themed typing interface.
- Real-time stat tracking.
- Real-time visual keyboard key highlighting.
- Passage-based text practice (not random isolated words).
- Change-text button for quick new passages.
- Session results modal with retry/new-text actions.
- Persistent best score tracking.
- Runs fully in the browser.
- No network calls for typing data.
- Data stored locally only (
localStoragefor best stats).
- Mistake-focused retry mode.
- Advanced passage categories (code, punctuation, numbers).
- Session history and charts.
- Custom goal/challenge system.
- If layout/styles look stale, hard refresh the page.
Tabis captured by the app during typing.- Press
Escto reset the current session.
