Sefism is free for learners. We are here to help you grow, one step at a time.Join for free
Sefism.
GitHub repo · OtherFree

Build Your Own X

A curated GitHub list of step-by-step tutorials for rebuilding well known technologies from scratch: databases, Git, shells, compilers, Docker, operating systems, web servers, emulators, search engines and more, in many languages. It is maintained by CodeCrafters and is one of the most starred repositories on GitHub. It suits developers who have finished beginner courses and want a project that teaches how real systems work underneath.

GitHub stars

549k

GitHub · Sept 2026

Forks

51.6k

GitHub · Sept 2026

Categories

28

GitHub README · Sept 2026

Last commit

July 2026

GitHub · Sept 2026

Format

GitHub repo

Topic

Other

Provider

CodeCrafters

Level

Intermediate

Access

Free

What is in the list

The README groups tutorials under around 28 headings, each titled "Build your own..." Categories include:

  • Systems: operating system, memory allocator, network stack, processor, emulator or virtual machine.
  • Developer tools: Git, Docker, shell, text editor, command line tool, template engine.
  • Data and search: database, search engine, regex engine.
  • Languages: programming language interpreters and compilers.
  • Web and networking: web server, web browser, BitTorrent client.
  • Graphics, games and AI: 3D renderer, physics engine, voxel engine, game, neural network and visual recognition.
  • Other: blockchain, bots and augmented reality.

Each entry names the language (C, C++, Python, Go, Rust, JavaScript, Java, Haskell and many others) and links to an external tutorial, article, book chapter or video series. The list itself is dedicated to the public domain.

Why it is so effective

Most projects students build after a course are variations of a to-do app. Rebuilding a real tool forces you to understand it: after writing a small Git you know what a commit object and a tree are; after building a shell you understand processes, pipes and file descriptors. That knowledge transfers to debugging and system design for the rest of your career.

How to choose and finish a project

  • Pick something you use every day, so you care about how it works. Git, a shell, an HTTP server and a key value database are popular first choices.
  • Choose one that slightly scares you but whose language you already know. Learning a new language and a new system at once is how people give up.
  • Give it a month of regular sessions. Follow the tutorial first, then extend it with a feature the tutorial did not cover.
  • Write a short README explaining what you built and what you learned. That turns it into a portfolio piece.

Where it falls short

The list only links out, so tutorial quality varies widely. Some are excellent multi-part series; others are brief blog posts, and a few links may point to material that has aged. Skim two or three options in your chosen category before committing. The maintaining company also sells its own paid, guided versions of some of these challenges; the list itself stays free.

Common questions

Is it good for beginners? Not for complete beginners. You should be comfortable writing small programs in at least one language first.

How long does a project take? Anywhere from a weekend (a simple web server) to several months (an operating system). Check the tutorial length before starting.

Which language should I use? The one you know best, unless the point of the exercise is to learn a systems language such as C, Go or Rust.

Best for: developers past the beginner stage who want to understand real systems by building them.

computer scienceopen sourcefree course

Ready to start?

Opens on CodeCrafters in a new tab.

Open resource
Link broken or out of date?

Report a problem

With "Build Your Own X". Only Tauseef reads this.

Work with me

Stuck on something specific?

Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.