* created file which holds skeletons for popups * using skeleton * saving skeleton after the events are bound * moved click event to a static element * using skeleton * added hide and show functions using skeleton * using skeleton * using skeleton * using skeleton * using skeleton * using skeleton * fixed a bug where updating the preset name would not immediately show the update * using skeleton * shorter link transition * using skeleton * using skeleton * using skeleton * fixed a bug where accounts with no pbs would cause misplaced "show all pbs" button * using skeleton * using skeleton * using skeleton * using skeleton * fixed quote mod not being sent to the client * using skeleton * using skeleton * using skeleton * using skeleton * using skeleton * using state object instead of html attributes fixed a bug where no tags text would persist even when tags were added to the test using skeleton * using skeleton * using skeleton * using skeleton * using skeleton * using skeleton * removed unused code * unnecessary import * unused code * using skeleton * changed click handling element only hiding and restarting the test if init returned true * using skeleton returning boolean from init function * removed console log * added function to check if a popup is visible * better visibility check * rewrote alerts to use state object instead of pushing straight to dom using skeleton * better visibility check * not using skeleton for now * using skeleton using state object better visibility check * added parent override * unnecessary code * changed function to a more generic one * fixed cookie popup text possibly overflowing popup * using "isPopupVisible" function instead of a "hasClass" check added some missing escape key handlers * using skeleton * using skeleton * using skeleton * using skeleton * standard popup animation length * consistent animation timing * using iselementvisible function * removed unused function * using isElementVisible * proper show and hide functions, added callback funciton on hide, added noAnim params * fixed no animation on the logo sub text * reordered click handlers * moved code to a fill function * using proper show and hide functions added callback on hide param added no anim and no callback parameters * added no anim parameter callback func is optional * also applying noanimation to hiding animation * using proper hide and show functions * using iselementvisible * using skeleton * missing space * storing text area state in custom text * using skeleton * setting state on show instead of on hide * moved click handler * unused code * missing parent override * using skeleton * no longer waiting for document to be ready * settings using skeleton * profile search using skeleton * page profile using skeleton * navigating to account if already logged in * using skeleton * using skeleton * emptying result replay and words history on restart * optimised theme picker * optimised settings page fill * performance optimisation * awaiting promises * brought back code that was accidentally removed * async * addad param to avoid duplicate group update on settings page load * added main thread yields to remove long tasks * optimising performance of about page loading * not awaiting * breaking up long tasks to optimise performance * optimised button appending * fixed avatar being too big * optimisation splitting up code added yields to split tasks * fixed merge * removed sleep * missing chart color update * updating main chart first * disabling animation during update * updating chart colors once instead of on every update * added one more sleep * removed sleep causing graphical issues * update chart regardless if it has data or not * hiding estimated words typed when no data was found |
||
---|---|---|
.github | ||
.husky | ||
backend | ||
bin | ||
frontend | ||
.editorconfig | ||
.eslintignore | ||
.eslintrc.json | ||
.gitignore | ||
.npmrc | ||
.nvmrc | ||
.prettierignore | ||
.prettierrc | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
CONTRIBUTING_ADVANCED.md | ||
CONTRIBUTING_BASIC.md | ||
LANGUAGES.md | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
QUOTES.md | ||
README.md | ||
SECURITY.md | ||
THEMES.md |
I know this is a little late:
IMPORTANT: I will be taking a break from Monkeytype for the duration of December (and potentially a bit of January too). I will address all PRs and issues when I start working on the project again. For critical issues, email jack@monkeytype.com. Thanks.
About
Monkeytype is a minimalistic and customizable typing test. It features many test modes, an account system to save your typing speed history, and user-configurable features such as themes, sounds, a smooth caret, and more. Monkeytype attempts to emulate the experience of natural typing during a typing test, by unobtrusively presenting the text prompts and displaying typed characters in-place, providing straightforward, real-time feedback on typos, speed, and accuracy.
Features
- minimalistic design, with optional advertisements and focus mode while typing
- type what you see, see what you type
- live errors, wpm, and accuracy displays
- variety of test lengths and languages
- punctuation and numbers modes
- quotes
- themes
- smooth caret
- account system
- challenges and just-for-fun test modifiers
- and much more
Discord bot
On the Monkeytype Discord server, we added a Discord bot to auto-assign optional roles based on typing performance and challenge completion. You can find its code over at https://github.com/monkeytypegame/monkeytype-bot.
Bug report or Feature request
If you encounter a bug or have a feature request, send us an email, create an issue, create a discussion thread, or join the Discord server.
Want to Contribute?
Refer to CONTRIBUTING.md.
Code of Conduct
Before contributing to this repository, please read the code of conduct.
Credits
Montydrei for the name suggestion.
Everyone who provided valuable feedback on the original Reddit post for the prototype of this website.
All of the contributors that have helped with implementing various features, adding themes, fixing bugs, and more.
Support
If you wish to support further development and feel extra awesome, you can donate, become a Patron or buy a t-shirt.