Boost your typing speed and accuracy β one paragraph at a time!
Typing Tutor Desktop is a modern desktop application (Electron + C backend) designed to help users improve their typing speed, accuracy, and confidence. It features a beautiful UI, customizable difficulty, real-time performance feedback, and a dynamic leaderboard.
-
π Random Paragraph Selection
- Each typing session presents a new, randomly chosen paragraph from a categorized text file.
-
β‘ Typing Speed & Accuracy Analysis
- Measures your typing speed in Characters Per Minute (CPM) and calculates accuracy as a percentage.
-
π― Difficulty Levels
- Choose from Easy, Medium, or Hard. Each level has its own set of paragraphs and stricter speed thresholds.
-
π₯οΈ Modern Desktop UI
- Built with Electron and styled for a clean, responsive, and attractive look.
-
π Case Sensitivity Option
- Toggle case sensitivity for a more challenging typing test.
-
π Dynamic Leaderboard
- Displays the top 5 scores for each difficulty level.
- Highlights the current user if they are on the leaderboard.
- Ensures each user has only one entry per difficulty, updating their score if they achieve a better result.
-
π§βπ» Custom Username
- Users can enter their name before starting the test, which will be displayed on the leaderboard.
- Node.js and npm (for Electron): Download and install from https://nodejs.org/.
- A C compiler (e.g.,
gcc): Ensure a C compiler is installed on your system. For Windows, consider using MinGW. For macOS, use Xcode's command-line tools. For Linux, use your distribution's package manager (e.g.,apt-get install build-essentialon Debian/Ubuntu). paragraphs.txt: A text file namedparagraphs.txtis required in thebuild/folder. This file contains the paragraphs for typing practice, categorized by difficulty level. The format is as follows:
#Easy
This is an easy paragraph. It should be short and simple.
Another easy paragraph for practice.
#Medium
This is a medium-difficulty paragraph. It's a bit longer and may include more complex words.
Another medium paragraph. More words!
#Hard
This is a hard paragraph. It contains challenging words and longer sentences.
Another hard paragraph to test your typing skills!
Typing-Tutor/
βββ app/ # Electron frontend
β βββ main.js # App entry point
β βββ index.html # UI layout
β βββ ... # Supporting assets and scripts
β
βββ build/ # Backend artifacts and data
β βββ typingtutor.exe # Compiled C executable
β βββ paragraphs.txt # Categorized text for practice
β βββ leaderboard.txt # Stores leaderboard results
β
βββ typingtutor.c # C backend source code
βββ README.md # Project documentation
βββ .github/workflows/
βββ release.yml # GitHub Actions workflow (Windows build)
app/β Electron frontend (HTML, CSS, JS)build/typingtutor.exeβ Compiled C backendbuild/paragraphs.txtβ Paragraphs for practice (categorized)build/leaderboard.txtβ Dynamic leaderboard filetypingtutor.cβ Main C source code.github/workflows/release.yml: GitHub Actions workflow for building and releasing the C executable.LICENSE: MIT License information.
Follow these steps carefully to build and run the application locally:
git clone https://github.com/itsmenuma/Typing-Tutor.git
cd Typing-TutorIf youβre working on your fork, use:
git clone https://github.com/<your-username>/Typing-Tutor.git
cd Typing-TutorEnsure the build/ folder exists. If not create it:
mkdir -p buildThen compile the C backend (Windows example using gcc):
gcc typingtutor.c -o build/typingtutor.exeThis will create the typingtutor.exe file needed by the Electron app. (Adjust for other OSes).
Edit or create a paragraphs.txt file inside the build/ directory if it doesn't exist with your own categorized paragraphs (see the example above in Prerequisites).
Navigate to the frontend directory:
cd app
npm installWhile inside the app/ directory:
npm startThe Electron app will launch and communicate with the compiled backend binary located at ../build/typingtutor.exe.
- Enter Your Name - Enter your name in the input field before starting the test.
- Choose Difficulty & Options - Select Easy, Medium, or Hard and toggle case sensitivity.
- Start Typing - Click "Start Typing Test" to get a random paragraph. Type it as fast and accurately as possible.
- Get Your Stats - See your CPM, WPM, accuracy, and performance feedback instantly.
- View the Leaderboard - Click "Leaderboard" to see the top 5 scores for the selected difficulty. Your name will be highlighted if you are on the leaderboard.
We β€οΈ contributions and welcome your help! Here's how you can contribute:
-
Fork the Repository
- Create your own copy of the project.
-
Create a Feature Branch
git checkout -b feature/your-feature-name
-
Make Your Changes
- Follow existing code style conventions (clean, readable, well-commented code).
- Test your changes locally using
npm startand building the C backend if needed.
-
Commit Your Changes
Use clear, concise commit messages:git commit -m Your commit message" -
Push Your Branch
git push origin feature/your-feature-name
-
Open a Pull Request
- Submit your changes for review on GitHub.
If you have bug reports or a feature suggestion, please open an issue with detailed information.
Licensed under the MIT License
Inspired by traditional typing tutor tools and modern desktop app design.
Got a question or feedback? Reach out at: numarahamath@gmail.com
-
Compilation Errors (C Backend): Ensure you have a compatible C compiler installed and correctly configured in your system's PATH environment variable. Refer to the compiler's documentation for installation and setup instructions. The error messages from the compiler will provide details about the specific issues encountered.
-
paragraphs.txtErrors: Check thatparagraphs.txtis in the correct location (build/) and is formatted correctly (see Prerequisites section). The application will output an error if it cannot load paragraphs from this file. -
Leaderboard Issues: The leaderboard data is stored in
build/leaderboard.txt. If there are issues with leaderboard display, check if this file is being correctly written to and read from by the application. -
Electron App Errors: If the Electron application fails to start, check the console for detailed error messages. These messages might indicate problems with Node.js installation, dependency resolution, or configuration files. Consider reviewing the
app/package.jsonfile for any potential issues. A common problem can be an incorrect path to thetypingtutor.exefile inapp/main.js.