This guide will help you set up a local development environment for Monkeytype. Follow these steps if you need to test functionality changes, take screenshots, or work on features that require the full application stack.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/monkeytypegame/monkeytype/llms.txt
Use this file to discover all available pages before exploring further.
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