{"id":21744527,"url":"https://github.com/srivastavasrijan/wordrace","last_synced_at":"2026-04-18T17:02:46.075Z","repository":{"id":205137693,"uuid":"450938489","full_name":"SrivastavaSrijan/WordRace","owner":"SrivastavaSrijan","description":"A fun, React-Redux game to gauge how fast you type, developed by someone who potentially has stubby fingers 🖖🏻","archived":false,"fork":false,"pushed_at":"2022-10-11T19:19:44.000Z","size":2674,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-25T20:48:02.889Z","etag":null,"topics":["cssmodules","game","react","redux","typescript"],"latest_commit_sha":null,"homepage":"https://apps.srijansrivastava.com/WordRace/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SrivastavaSrijan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-01-22T21:21:18.000Z","updated_at":"2022-10-11T19:13:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"3d38d750-e350-41a3-96a1-ea3199374ddb","html_url":"https://github.com/SrivastavaSrijan/WordRace","commit_stats":null,"previous_names":["srivastavasrijan/wordrace"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SrivastavaSrijan/WordRace","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SrivastavaSrijan%2FWordRace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SrivastavaSrijan%2FWordRace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SrivastavaSrijan%2FWordRace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SrivastavaSrijan%2FWordRace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SrivastavaSrijan","download_url":"https://codeload.github.com/SrivastavaSrijan/WordRace/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SrivastavaSrijan%2FWordRace/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31976805,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T16:27:12.723Z","status":"ssl_error","status_checked_at":"2026-04-18T16:27:11.140Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cssmodules","game","react","redux","typescript"],"created_at":"2024-11-26T07:11:50.560Z","updated_at":"2026-04-18T17:02:46.040Z","avatar_url":"https://github.com/SrivastavaSrijan.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## ⚔️ Word Race \nA fun, React-Redux game to gauge how fast you type, developed by someone who potentially has stubby fingers 🖖🏻\n\n## 👁️ Preview\nCheck it out here - [Word Race](https://apps.srijansrivastava.tech/WordRace/)\n\n## ⏲️ About the Application\n\nWord Race is a game designed to improve QWERTY typing rate and efficiency. Words appear one by one at a rate that goes up as time progresses. There's a limited \"stack space\" that fills up after a certain amount of words have appeared. Once a player types a word correctly, that word is removed from the stack.\n\nThe score is calculated based on how fast the player was able to clear that word, and a multiplier. The multiplier increases with every word the player types correctly and resets on any mistype. A leveling system varies the word appearing rate, the stack space and leveling up bonus score, else the rate can go up constantly, flattening out at say one word per two seconds.\n\nIf the stack is full, it's game over. \n\n## 🛠 Implemention Details\n\n### Component Heirarchy\n\n\u003cdetails\u003e\n\u003csummary\u003eKeyboard\u003c/summary\u003e\n\u003cp\u003e\n\u003cbr\u003e\n  1. Keyboard based on JSX, styled using CSSModules\n  2. Iterates through an array to render out keys, row-wise, and sets up event listeners for them\n  3. Accepts SPACEBAR to start, and then dipatches keyPressed and keyCounts if keydown and keyup events are triggered\n  4. Selects characterRequested and length. If keyPressed === characterRequested, and keyCount === wordLength, then the word typed is correct!\n  5. Dispatches isCorrect, which is the corresponding action to WordRaceApp\n  6. If incorrect, dispatches action to decrement score\n  7. Uses sound effects for different actions\n\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWordStack\u003c/summary\u003e\n\u003cp\u003e\n\u003cbr\u003e\n  1. Word Stack based on JSX, styled using CSSModules\n  2. Iterates through an array to render out words, fetched from an API, and dispatches the app being idle\n  3. Styles the letters in the current word according to whether they are meant to be pressed or not\n  4. Keeps count of the current length of the word stack. If word stack exceeds the permisible limit, it dispatches an action to end the game\n\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eTimer\u003c/summary\u003e\n\u003cp\u003e\n\u003cbr\u003e\n  1. Timer based on JSX, styled using CSSModules, internally uses the useTimer hook for keeping track of the elapsed time\n  2. Accepts the shouldStart and shouldStop selectors to internally trigger the timer\n  3. Accepts interval to decide what the time between words appearing on screen should be\n\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWordRaceApp\u003c/summary\u003e\n\u003cp\u003e\n\u003cbr\u003e\n  1. Root App.jsx which is the heart of the application\n  2. Handles the OVER status and resets the score, timer and word index, as well as the character to be requested\n  3. Handles the use case when the word typed is correct - handles setting the next word, resetting key pres count and character index, and the socre to increment\n  4. The score is calculated on the basis of a base score, decremented by word stack length, multiplied by the the number of words typed added with the current level\n  5. Handles score incremention and level progression - right now, the maximum level to reach is 3\n  6. Triggers sound effects for warning the user that the stack is almost full, and also that the game is over\n\u003c/p\u003e\n\u003c/details\u003e\n\n\n### 🐎 Starting the Project\n\nInstall the dependencies with `npm i` or `yarn`  \nStart the project by `npm start` or `yarn start`\n\n### 🕸️ Deployment\n\nYou can deploy easily by using [GHPages](https://www.npmjs.com/package/gh-pages) 🎉\n\n\n## ⚙ Tech Stack\n\n- React\n- Redux\n- CSSModules\n- TypeScript\n- ESLint and Prettier\n- 3rd Party Libraries - Classnames, UseSound, UseConstant and UseTimer\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrivastavasrijan%2Fwordrace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsrivastavasrijan%2Fwordrace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrivastavasrijan%2Fwordrace/lists"}