As you all may know, the beta curriculum itself - and the new settings/portfolio pages - have been done and ready to launch for several weeks now.
The reason we haven’t launched them is we saw an opportunity to quickly re-architect freeCodeCamp so it can be faster, more secure, and much easier to contribute to.
And today I’m going to share with you the changes we’ve made.
We’ve broken the freeCodeCamp beta “monolith” down into several services:
Improvement #1: freeCodeCamp Learn
The freeCodeCamp coding challenges are now housed in a separate web app, freeCodeCamp Learn. This coding environment uses Gatsby.js and is much easier to maintain than our old beta learning environment.
Now you’ll be able to start contributing to the curriculum and freeCodeCamp Learn platform within minutes, rather than the much longer setup necessary for the old beta learning platform.
We’re still working on linking it with freeCodeCamp accounts. And we’re still tweaking the UI, the VS Code Monaco code editor (a replacement for Codemirror), and the offline mode. Soon it will look something like this:
@bouncey is leading this freeCodeCamp Learn effort.
The current build is live here and here is the Learn repo.
Improvement #2: Auth0
Auth0 has agreed to give us essentially unlimited use of their product, and we’re using that for authentication rather than rolling our own authentication. This means campers will be able to use a single passwordless authentication across several freeCodeCamp subdomains (including Guide and Learn). @raisedadead is leading this effort.
Improvement #3: GraphQL
We’re building a GraphQL API that sits on top of our MongoDB server. Everything on the platform will be able to now use GraphQL queries instead of needing hard-code endpoints.
The repo and its endpoints are here: https://github.com/freeCodeCamp/open-api/
@ojongerius is leading this effort.
We will be opening and closing GitHub issues to reflect these changes. We welcome your contributions, and are happy to answer any questions you may have about these improvements.