A Typing Speed Test application developed using MERN Stack.
Application is developed using MERN Stack:
- for frontend
- react
- react-countdown-circle-timer
- typewriter-effect
- font-awesome
- for backend
- express
- cors
- mongoose
- mongoose-simple-random
- In the Typing_Test directory, use command
npm i
to install backend node dependancies. - Change Directory to frontend directory.
cd frontend
- Install the required Frontend node dependacies using
npm i
.
- To start frontend; Open a terminal in frontend directory and Run the command
npm start
- To start Backend; On another terminal open the Typing_Test directory and Run the Command:
node server.js
-
Start Now
button to start the typing test.- Typerwriter effect implemented using
typewriter-effect
module.
-
- Floating icon buttons which link to GitHub and LinkedIn profiles on click.
- Hovering effect added.
- This will be displayed throughout the application lifetime.
-
- AutoFocus attribute of HTML used in the input box.
- Real-time measure of words per minute, characters per minute, correct words.
- Timer with changing styling to keep track of time.
- Current word is underlined.
- Word(/letter) highlighted with green if matched correctly or red if incorrect. Entire word is marked wrong if any character is misspelt.
- If space is pressed, cursor will shift to the next word irrespective of whether word entered before was completed or not. Text box is also cleared.
- Use of backspace is allowed.
-
- Words per minute is calculated for every word completed i.e. whenever a space is hit. Here we assume average letter count of word to be 6 to remove any bais.
- Correct words are stored by making letter by letter comparison. This is also displayed in realtime.
- Characters per minute is calculated by updating character count for every character other than space (For all calculations and input, space is the delimiter).
- Accuracy is calculated from the ratio of correct words and total words typed and expressed as percentage.
-
- The test ends if the paragraph(/text) provided is completed or the timer stops i.e after 60 seconds.
- The results will display the calculated word per minute and also the accuracy of typing the text.
-
Database has been used for-
- Leaderboard entries-
- New entry will be added if user presses the
Add to LeaderBoard
button on the result page. - The entries are fetched from the
leaderboard
collection and displayed in realtime.
- Text during typing speed test-
- Different texts have already been stored in the collection
texts
using the MongoDB Compass. - The text to be fetched for display is selected at random from the collection.