Use this guide for:
- Adding or updating languages
- Contributing quotes
- Creating themes
- Fixing translations
Prerequisites
All you need is:- A browser that can access GitHub
- A GitHub account (create one if needed)
Forking Monkeytype
Create Your Fork
Click here to fork Monkeytype or navigate to the repository and click the Fork button in the top-right corner.This creates your own copy of the repository under your GitHub account.
Making Changes
There are two ways to edit files in your fork:Option 1: VS Code Web Editor (Recommended)
The VS Code web editor makes it easier to edit multiple files and work with complex changes.Open Web Editor
In your fork, go to the
Code tab and press the . (period/dot) key. This opens an online VS Code instance in your browser.Option 2: GitHub Web UI
For simple, single-file edits, you can use GitHub’s built-in editor.Click Edit
Click the pencil icon on the right side of the file view.
Very large files may not have an edit option. In these cases, use the VS Code web editor or set up a local development environment.
Adding Languages
Create the Language File
Navigate to
frontend/static/languages/ in your fork.Create a new JSON file named according to the word count:- Less than 1,000 words:
language_name.json - 1,000+ words:
language_name_1k.json - 10,000+ words:
language_name_10k.json
Add Language Data
Use this structure:
rightToLeft: Set totruefor RTL languages (Arabic, Hebrew, etc.)ligatures: Set totrueif letters join together (Arabic, Malayalam, etc.)orderedByFrequency: Set totrueif words are sorted by frequencybcp47: The IETF language tag
Update the Language Schema
Go to
packages/schemas/src/languages.ts and add your language name(s) to the end of the LanguageSchema enum:Adding Quotes
Navigate to Quotes File
Go to
frontend/static/quotes/[language].json for your target language.If the file doesn’t exist, create it.Add Your Quote
Add this structure at the end of the quotes array:
id: Increment from the last quote’s IDlength: Character count of the quote text- Minimum quote length: 60 characters
Creating Themes
Choose a Theme Name
Pick a name that is:
- All lowercase
- Uses underscores instead of spaces
- Example:
my_awesome_theme
Add to Theme Schema
Go to
packages/schemas/src/themes.ts and add your theme name to the end of ThemeNameSchema:Define Theme Colors
Go to Color properties:
frontend/src/ts/constants/themes.ts and add your theme configuration at the end:bg: Background colorcaret: Typing cursor colormain: Primary accent colorsub: Secondary text colorsubAlt: Alternative background colortext: Main text colorerror: Error text colorerrorExtra: Error background colorcolorfulError: Colorful mode error textcolorfulErrorExtra: Colorful mode error background
Creating a Pull Request
Update Your Fork
Go to your fork’s main page and click the “Sync fork” or “Update branch” button to sync with the latest changes from the main repository.
Fill in Details
- Verify the base repository is
monkeytypegame/monkeytypeand base branch ismaster - Add a descriptive title following the naming guidelines
- Describe your changes in detail
- For themes, include screenshots
- For non-English quotes, include translations
After Submission
Once your pull request is created:- Wait for maintainer review
- Respond to any feedback or change requests
- Make additional commits to your branch if needed
- Once approved, a maintainer will merge your contribution
Guidelines
Make sure your contribution follows the appropriate guidelines:Getting Help
If you need assistance:- Join the
#developmentchannel on Discord - Ask on GitHub Discussions
- Email the maintainers at [email protected]