Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
  header image β˜•

Learn programming and computer science for free.

Project Overview

This website is a platform to learn to code. It is inspired by sites like freeCodeCamp, CSS Tricks,, Smashing Magazine, and many others. is open source and we encourage contributions to both the website and the content! Read on to learn more about the project.

Quick Start

  1. Clone this repo: git clone
  2. Move into root (where this file is) and run yarn
  3. (Optional) Create a .env file and copy into it the content of .env.example.
  4. Run yarn dev to start the server
  5. Navigate to http://localhost:3000

If you are creating a PR, create a new branch. Before you commit run yarn build. This will run the tests and make sure everything is working.

Note: If you are not planning on making a PR, you can run rm -rf .git to remove git tracking.

Tech Stack Overview

  • πŸš€ Next.js - Framework
  • 🎨 Chakra UI - CSS Component Library
  • πŸ“œ TypeScript (and some JavaScript) - Web language of choice
  • πŸ§ͺ Jest - Testing
  • ✍🏼 MDX - Database for Article, Authors, Courses, Tags
  • πŸ”Ί Vercel - Deployment
  • πŸ’» GitHub - Version Control
  • πŸ“Š Google Analytics - Analytics
  • 🐝 Splitbee - More Analytics
  • πŸ”Ž Algolia - Search

Besides the above, this site uses additional yarn packages and some other smaller external software.

Deep(er-ish) Dive

This repo is broken up into 4 main parts.

  • src: This is the Next.js website.
  • content: This is the content for the website stored in mdx files.
  • public: This is the static assets for the website.
  • tests: Jest unit tests for the website.

Inside the src folder, we have the following:

  • components: Our UI components.
  • configs: Various configuration files for courses.
  • hooks: Custom TS hooks.
  • layouts: MDX page layouts.
  • pages: Where the pages (routes) and api routes are stored.
  • scripts: Stand alone scripts (DRY) and build scripts
  • styles: Theme styles and Chakra UI default theme config.

Open Source

This entire project is open source. We encourage contributions! Read on to see how you can contribute.

Contributing Content

If you want to contribute an article please follow the steps on Below is a quick guide to submit an article or start a new course.



Here are the steps to add a new course:

  1. Add course to courses.json
  2. Add json file in configs/courses folder
  3. Import json and add it to configMap in pages/courses/[course]/index.tsx, Components/Courses/Sidebar, and Components/Courses/Pagination
  4. Add folder to content/courses with at least one module

Contributing to the Website

You can also contribute to the website itself. New features and bug fixes are always appreciated. Feel free to check out the Roadmap πŸš— for future plans and what we're working on currently. If you see anything you want to tackle, feel free to leave a comment on the Roadmap user story and open a PR!

Roadmap πŸš—

Our roadmap is also our agile development process. View cards, see what we are working on, view future plans and more on the roadmap.


The following companies and services have given free services to this website. Go check them out!

Vercel Splitbee Algolia