freeCodeCamp localhost - a curriculum you can do from your terminal

Hi freeCodeCamp Contributors,

This month we are making steady progress on the big updates to freeCodeCamp’s curriculum, as well as lots of performance improvements for our publication.

Reality moves slow, but imagination has no speed limit.

We have more ideas for what we can do than we have the time and energy execute. And the community is constantly sharing awesome ideas for what we can do, too.

But there is one idea I’ve had from the beginning. I’m not quite sure how to execute this properly. There are plenty of people who’ve tried to do it in the past, to varying degrees of success. The freeCodeCamp community could be the first ones to really make this work at scale.

freeCodeCamp localhost

A few years ago, my friend Erik Trautman created an open source project called The Odin Project. It was focused on learning software development right on your local computer (instead of coding in a browser, like freeCodeCamp’s curriculum is focused on).

And there was another project called Node School that had tutorials that ran completely in your terminal, and looked like awesome MS DOS programs from the 80s.


There were several intrinsic problems that prevented The Odin Project and Node School from really catching on:

  • It’s hard to teach people how to configure their developer environment. Everyone’s computer is different, with different operating systems, and versions, and different configuration states.
  • It’s hard to teaching people how to use command line tools and other developer tools when you can’t properly test whether they’re doing things correctly.
  • How do you preventing people from running unsafe commands and completely screwing up their computer?
  • Also, a lot of people use public computers at schools or libraries, and may not be able to always use the same computer each time. Or these public computers may be locked down and not grant users permissions necessary to install and use the necessary tools.

With freeCodeCamp, we decided it was simpler to do everything in the browser so people didn’t have to fuss with local developer environment configuration.

And in practice, most jobs will give you a computer that is already set up by the IT department with a standard disk image. Within a few hours, you can quickly learn how to do software development locally.

But some people really do want to learn on their computers. And people often criticize freeCodeCamp’s curriculum for not training people how to use a desktop environment.

So here is my idea (which I encourage you all to discuss below).

A command line version of the freeCodeCamp curriculum

What if we built a version of freeCodeCamp that could run entirely in Docker on your laptop/desktop, where you could work through the entire curriculum right in your terminal?

This would cover basic Linux, Git, Python, SQL, and maybe even a classic editor like Vim.

And then students would create some basic websites using HTML, CSS, and JavaScript.

It would be a single, linear curriculum, where people work from start to finish. They would build several increasingly complicated projects.

By the end of the curriculum, they would have a fairly sophisticated CRUD app running with a Node or Django backend, Postgres database, and React front end - all accessible from their browser at localhost:8080.

We could teach all kinds of topics that are currently impractical to teach in the browser. (Though freeCodeCamp will eventually teach these in the browser as well. The libraries for simulating Linux, Git, and SQL in the browser get better every year.)

If you’re looking for some inspiration for how this might work, take a look at NodeSchool, which used to be part of freeCodeCamp’s curriculum:

Regex Adventure
How to npm
Perf School

And the Koan series:

Python Koans
Bash Koans
JavaScript Koans

And the Git It local Git tutorial:
The Git It local Git tutorial

Eventually this could be something anyone, anywhere in the world could use to learn some basic coding - even from a Raspberry Pi or a cheap Chromebook - and without internet access.

You wouldn’t need to upload anything anywhere, and there would be no certifications - just the feeling of accomplishment and all the learning along the way.

What do you all think?

Share your ideas.

Is anyone interested in stepping forward and helping contribute to this initiative?


Right now running FCC local should be as simple as:

$ git clone
$ cd freecodecamp
$ docker-compose up

Not saying it is that simple, but that should be the idea. But I take it from the Chromebook reference you’re talking about perhaps making the curriculum a local web app, using local storage like IDB instead of mongo?

I’m super-interested, but I’ve already overcommitted my time to other projects :anguished:

1 Like

This sounds like a great idea, but could users have the option to submit their answers? I’d hate to see this as an option that is underused because they can’t check their answers or get certifications.

This really does sounds like a fantastic idea. I’m a little surprised there hasn’t been more discussion already. I feel this is the place people should start when learning to code. Docker though is not as universal as one might hope. As I sit hear on my Pentium 4 desktop box with 1gig memory and 40gig hard-drive running 32bit Debian 8, I have access to Vim, Git , Python2 and 3 Node etc. However I would have no ability to run Docker. I realise that I’m probably an outlier but thought I would make the point that Docker may not be accesable to all.

1 Like

This will really be great. Many of us don’t have consistent access to the internet. This will be really helpful to them. Also using terminal gives a feeling of awesomeness… :laughing:


Indeed, there are times my connection is not fully reliable, or for safety I will turn it off during the thunderstorms.
Note: Myth or fact, I prefer keep my devices unplugged for safety. Personal choice.
@farukEncoded, welcome to FCC! I hope you enjoy the variety of resources and support you will encounteer.

1 Like

I like this idea. Though, I support @MJ94 with being able to submit the answer, probably on a git repository or something just for evaluation.

Thanks for your feedback, Faruk. And also, welcome to the forum :cowboy_hat_face:

1 Like