You will need to fork the freeCodeCamp repository on GitHub to get your own copy of the codebase. This will allow you to follow a Git-based workflow to contribute to freeCodeCamp.
Follow these steps to fork the repository:
Click the button below to fork the freeCodeCamp repository on GitHub.
Next, you need to choose between setting up a cloud IDE or your own machine.
If you’re looking to make a one-time contribution or want the fastest setup, use GitHub Codespaces which provides a ready-to-code environment in your web browser using devcontainers. For long-term contributions where you prefer local development, you can set up freeCodeCamp on your local machine.
| Feature | GitHub Codespaces | Your own machine |
| --------------------------- | ------------------------------------------------------ | ------------------------------------------------ |
| Hardware requirements | No minimum hardware requirements | Powerful minimum hardware requirements |
| Software installation | No need to install any software | Additional software needed |
| Repository status | Always up-to-date repository | Manual updates required |
| Setup complexity | Easy setup with devcontainers, works in any browser | Larger download and setup time |
| Internet dependency | Requires an internet connection to work | Minimal internet connection required once set up |
| Performance | Consistent cloud-based performance | Depends on your machine capabilities |
| Usage limits | 60 hours free per month for personal accounts | No usage limits |
| Environment consistency | Identical setup for all contributors via devcontainers | May vary between different machines and OS |
Once you have decided, follow the relevant tab below to continue with the setup.
We have automated the development environment setup using devcontainers. With GitHub Codespaces, you get a consistent, ready-to-code environment that runs in your browser with all dependencies pre-installed.
Launch a Codespace from your fork:
Go to your fork at https://github.com/YOUR_USER_NAME/freeCodeCamp
Click the green Code button
Select the Codespaces tab
Click Create codespace on main
Your codespace will automatically set up the development environment using our devcontainer configuration. This includes:
Installing Node.js, pnpm, and all dependencies
Setting up MongoDB
Configuring VS Code extensions
Preparing the environment variables
Wait for the setup to complete (usually 2-3 minutes)
Here is a minimum system requirement for running freeCodeCamp locally:
System Requirements
A fast CPU (4+ cores)
At least 8 GB RAM
macOS, Linux
8-10 GB of free disk space
(Optional) 30-50 Mbps internet connection
Windows users: You will need more resources like memory and CPU than above, to allow running the project on Linux with WSL.
Start by installing the prerequisite software for your operating system.
| Prerequisite | Version | Notes |
| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------- |
| Node.js | 24.x | We use the “Active LTS” version, see LTS Schedule. |
| pnpm | 10.x | - |
| MongoDB Community Server | 8.0.x | - |
| Docker Compose | 2.x | - |
Run the following commands to validate the versions:
Terminal window
node-v
Terminal window
pnpm-v
Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once.
Install Git or your favorite Git client, if you haven’t already. Update to the latest version; the version that came bundled with your OS may be outdated.
This will download the entire freeCodeCamp repository to your projects directory.
(Optional) The localized versions of our curriculum are stored in the i18n-curriculum repo. If you intend to run a localized version of the curriculum follow the next steps, or skip to the next section.
Now that you have downloaded a copy of your fork, you will need to set up an upstream remote to the parent repository.
As mentioned earlier, the main repository is referred to as the upstream repository. Your fork is referred to as the origin repository.
You need a reference from your local clone to the upstream repository in addition to the origin repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly.
Change the directory to the new freeCodeCamp directory if you aren’t already there:
Terminal window
cdfreeCodeCamp
Add a remote reference to the main freeCodeCamp repository:
Your Codespace comes pre-configured with all dependencies installed and services like the database already running. You can start developing immediately:
In the terminal, run:
Terminal window
pnpmrundevelop
This will start both the API server and the client applications.
Wait for the process to complete. It can take a few minutes, you will see a notification to for the 8000 port when it’s ready.
Click on the notification to open the client application in a new browser tab.
The default API keys and environment variables are stored in the file sample.env. This file needs to be copied to a new file named .env that is accessed dynamically during the installation step.
Terminal window
cpsample.env.env
The keys in the .env file are not required to be changed to run the app locally. You can leave the default values copied over from sample.env as-is.
You can now start up the API server and the client applications.
If you’re working on curriculum content, we strongly recommend using selective builds to significantly reduce build time. Set one of the following environment variables to build only what you need:
FCC_SUPERBLOCK — build a single superBlock
FCC_BLOCK — build a single block
FCC_CHALLENGE_ID — build a single challenge by its ID
For example, to build only the Responsive Web Design superblock:
| Command | Description |
| ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
| pnpm install | Installs / re-installs all dependencies and bootstraps the different services. |
| pnpm run seed | Creates authorized test users and inserts them into MongoDB. Also runs seed:exams and seed:surveys below. |
| pnpm run seed:certified-user | Creates authorized test users with certifications fully completed, and inserts them into MongoDB. |
| pnpm run seed:exams | Creates exams and inserts them into MongoDB. |
| pnpm run seed:surveys | Creates surveys for default users and inserts them into MongoDB. |
| FCC_SUPERBLOCK='responsive-web-design' pnpm run develop | Starts the API Server and Client, building only the specified SuperBlock (recommended for curriculum work). |
| FCC_BLOCK='basic-html-and-html5' pnpm run develop | Starts the API Server and Client, building only the specified Block (recommended for curriculum work). |
| FCC_CHALLENGE_ID=646cf6cbca98e258da65c979 pnpm run develop | Starts the API Server and Client, building only the specified Challenge (recommended for curriculum work). |
| pnpm run develop | Starts the freeCodeCamp API Server and Client Applications with full curriculum build (for thorough testing). |
| pnpm run clean | Uninstalls all dependencies and cleans up caches. |