If you only want to add languages, quotes, or themes without running the application locally, check out the Basic Contributions guide instead.
Prerequisites
Before you begin, ensure you have:- A computer with a stable internet connection
- A text editor or IDE
- Basic familiarity with Git and command line tools
- Node.js version 24.11.0 LTS
Git Setup
Git is optional but highly recommended for contributing to Monkeytype. If you’re not comfortable with command-line Git, consider using Sourcetree, which provides a graphical interface. When installing Sourcetree, make sure to select the option to install Git alongside it.Node.js and PNPM
Monkeytype currently uses Node.js version24.11.0 LTS.
Using nvm (recommended):
Windows users should use nvm-windows.
pnpm for package management instead of npm or yarn:
Installation
Fork the Repository
Go to the Monkeytype repository and click the “Fork” button in the top-right corner to create your own copy.
Configure Firebase (Optional)
Skip this step if you won’t be working with the account system. You can always set it up later.
- Create a Firebase project
- Enable Firebase Authentication:
- Go to
Build > Authentication > Sign-in method - Enable
Email/PasswordandGooglesign-in
- Go to
- Install Firebase CLI:
- Configure Firebase in the frontend:
- Duplicate
frontend/src/ts/constants/firebase-config-example.ts - Rename to
firebase-config.ts - Add your Firebase config from Project Settings > General > Your apps
- Duplicate
- Set up
.firebaserc:- Duplicate
frontend/.firebaserc_exampleto.firebaserc - Update the project ID:
- Duplicate
Set Up Databases (Optional)
Only required if you’re working on the backend or account system.Option 2: Manual Installation
- Copy
backend/example.envtobackend/.env - Set up the database server:
- Install MongoDB Community Edition
- Install Redis
- Ensure both services are running
- (Optional) Install MongoDB Compass for visual database management
- Connect using:
mongodb://localhost:27017
- Connect using:
Running Monkeytype Locally
You can run Monkeytype manually or with Docker.Running Both Frontend and Backend
- Frontend development server on http://localhost:3000
- Backend development server on http://localhost:5005
Running Frontend Only
Manual:Running Backend Only
Manual:The development server automatically rebuilds when you make changes in the
src/ directory. Rebuilding may take a moment depending on your machine.Network Access (Optional)
To access the frontend from other devices on your network, createfrontend/.env:
Other Useful Commands
Linting and Formatting
Testing
Building
Code Quality
Monkeytype uses Oxc (Oxfmt and Oxlint) for code formatting and linting. These tools run automatically when you make a commit via Git hooks.Next Steps
- Review the Guidelines for contribution standards
- Learn about Basic Contributions for adding languages, quotes, and themes
- Explore Advanced Contributions for code changes
Getting Help
If you have questions or run into issues:- Ask in the
#developmentchannel on Discord - Open a discussion on GitHub Discussions
- Contact the maintainers on GitHub