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
1
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.
2
Navigate to Your Fork
Go to your GitHub profile and find the
monkeytype repository under your repositories.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.1
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.2
Make Your Changes
Edit the files you need to change using the file explorer on the left.
3
Stage and Commit
- Open the Source Control tab with Ctrl/Cmd + Shift + G
- Click the
+next to changed files to stage them - Type a brief commit message describing your changes
- Press Ctrl/Cmd + Enter to commit
Option 2: GitHub Web UI
For simple, single-file edits, you can use GitHub’s built-in editor.1
Navigate to File
Browse to the file you want to edit in your forked repository.
2
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.
3
Make Changes
Edit the file content as needed.
4
Commit Changes
- Scroll to the bottom of the page
- Add a descriptive commit title
- (Optional) Add a detailed description
- Select “Commit directly to your current branch”
- Click Commit changes
Adding Languages
1
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
2
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
3
Update the Language Schema
Go to
packages/schemas/src/languages.ts and add your language name(s) to the end of the LanguageSchema enum:4
Add to Language Groups
Go to
frontend/src/ts/constants/language.ts and add your language to the LanguageGroups map:Adding Quotes
1
Navigate to Quotes File
Go to
frontend/static/quotes/[language].json for your target language.If the file doesn’t exist, create it.2
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
3
Verify Your Quote
Check that:
- The quote isn’t a duplicate
- The
lengthvalue is accurate - The
idis correctly incremented - No trailing commas in the JSON
Creating Themes
1
Choose a Theme Name
Pick a name that is:
- All lowercase
- Uses underscores instead of spaces
- Example:
my_awesome_theme
2
Add to Theme Schema
Go to
packages/schemas/src/themes.ts and add your theme name to the end of ThemeNameSchema:3
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
4
Add Custom CSS (Optional)
If your theme needs custom styling:
- Create
frontend/static/themes/your_theme_name.css - Add
hasCss: trueto your theme configuration:
Creating a Pull Request
1
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.
2
Open Pull Request
Click the Contribute button, then Open pull request.
3
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
4
Submit
Click Create pull request to submit your contribution.
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 jack@monkeytype.com