# CodeCrafters – Build Your Own <X> repo

> Source: <https://github.com/codecrafters-io/build-your-own-x>
> Published: 2026-07-23 23:23:05+00:00

This repository is a compilation of well-written, step-by-step guides for re-creating our favorite technologies from scratch.

What I cannot create, I do not understand — Richard Feynman.

It's a great way to learn.

[3D Renderer](#build-your-own-3d-renderer)[AI Model](#build-your-own-ai-model)[Augmented Reality](#build-your-own-augmented-reality)[BitTorrent Client](#build-your-own-bittorrent-client)[Blockchain / Cryptocurrency](#build-your-own-blockchain--cryptocurrency)[Bot](#build-your-own-bot)[Command-Line Tool](#build-your-own-command-line-tool)[Database](#build-your-own-database)[Docker](#build-your-own-docker)[Emulator / Virtual Machine](#build-your-own-emulator--virtual-machine)[Front-end Framework / Library](#build-your-own-front-end-framework--library)[Game](#build-your-own-game)[Git](#build-your-own-git)[Memory Allocator](#build-your-own-memory-allocator)[Network Stack](#build-your-own-network-stack)[Neural Network](#build-your-own-neural-network)[Operating System](#build-your-own-operating-system)[Physics Engine](#build-your-own-physics-engine)[Processor](#build-your-own-processor)[Programming Language](#build-your-own-programming-language)[Regex Engine](#build-your-own-regex-engine)[Search Engine](#build-your-own-search-engine)[Shell](#build-your-own-shell)[Template Engine](#build-your-own-template-engine)[Text Editor](#build-your-own-text-editor)[Visual Recognition System](#build-your-own-visual-recognition-system)[Voxel Engine](#build-your-own-voxel-engine)[Web Browser](#build-your-own-web-browser)[Web Server](#build-your-own-web-server)[Uncategorized](#uncategorized)

**C++**:*Introduction to Ray Tracing: a Simple Method for Creating 3D Images***C++**:*How OpenGL works: software rendering in 500 lines of code***C++**:*Raycasting engine of Wolfenstein 3D***C++**:*Physically Based Rendering:From Theory To Implementation***C++**:*Ray Tracing in One Weekend***C++**:*Rasterization: a Practical Implementation***C# / TypeScript / JavaScript**:*Learning how to write a 3D soft engine from scratch in C#, TypeScript or JavaScript***Java / JavaScript**:*Build your own 3D renderer***Java**:*How to create your own simple 3D render engine in pure Java***JavaScript / Pseudocode**:*Computer Graphics from scratch***Python**:*A 3D Modeller*

**Python**:*A Large Language Model (LLM)***Python**:*Diffusion Models for Image Generation***Python**:*RAG for Document Search*

[video]**C#**:*How To: Augmented Reality App Tutorial for Beginners with Vuforia and Unity 3D*[video]**C#**:*How To Unity ARCore*[video]**C#**:*AR Portal Tutorial with Unity*[video]**C#**:*How to create a Dragon in Augmented Reality in Unity ARCore*[video]**C#**:*How to Augmented Reality AR Tutorial: ARKit Portal to the Upside Down***Python**:*Augmented Reality with Python and OpenCV*

**C#**:*Building a BitTorrent client from scratch in C#***Go**:*Building a BitTorrent client from the ground up in Go***Nim**:*Writing a Bencode Parser***Node.js**:*Write your own bittorrent client***Python**:*A BitTorrent client in Python 3.5*

**ATS**:*Functional Blockchain***Crystal**:*Write your own blockchain and PoW algorithm using Crystal***Go**:*Building Blockchain in Go***Go**:*Code your own blockchain in less than 200 lines of Go***Java**:*Creating Your First Blockchain with Java***JavaScript**:*A cryptocurrency implementation in less than 1500 lines of code***JavaScript**:*Build your own Blockchain in JavaScript***JavaScript**:*Learn & Build a JavaScript Blockchain***JavaScript**:*Creating a blockchain with JavaScript***JavaScript**:*How To Launch Your Own Production-Ready Cryptocurrency***JavaScript**:*Writing a Blockchain in Node.js***Kotlin**:*Let’s implement a cryptocurrency in Kotlin***Python**:*Learn Blockchains by Building One***Python**:*Build your own blockchain: a Python tutorial***Python**:*A Practical Introduction to Blockchain with Python***Python**:*Let’s Build the Tiniest Blockchain***Ruby**:*Programming Blockchains Step-by-Step (Manuscripts Book Edition)***Scala**:*How to build a simple actor-based blockchain***TypeScript**:*Naivecoin: a tutorial for building a cryptocurrency***TypeScript**:*NaivecoinStake: a tutorial for building a cryptocurrency with the Proof of Stake consensus***Rust**:*Building A Blockchain in Rust & Substrate*

**Haskell**:*Roll your own IRC bot***Node.js**:*Creating a Simple Facebook Messenger AI Bot with API.ai in Node.js***Node.js**:*How to make a responsive telegram bot***Node.js**:*Create a Discord bot***Node.js**:*gifbot - Building a GitHub App***Node.js**:*Building A Simple AI Chatbot With Web Speech API And Node.js***Python**:*How to Build Your First Slack Bot with Python***Python**:*How to build a Slack Bot with Python using Slack Events API & Django under 20 minute***Python**:*Build a Reddit Bot*[video]**Python**:*How To Make A Reddit Bot***Python**:*How To Create a Telegram Bot Using Python***Python**:*Create a Twitter Bot in Python Using Tweepy*[video]**Python**:*Creating Reddit Bot with Python & PRAW***R**:*Build A Cryptocurrency Trading Bot with R***Rust**:*A bot for Starcraft in Rust, C or any other language*

**Go**:*Visualize your local git contributions with Go***Go**:*Build a command line app with Go: lolcat***Go**:*Building a cli command with Go: cowsay***Go**:*Go CLI tutorial: fortune clone***Nim**:*Writing a stow alternative to manage dotfiles***Node.js**:*Create a CLI tool in Javascript***Rust**:*Command line apps in Rust***Rust**:*Writing a Command Line Tool in Rust***Zig**:*Build Your Own CLI App in Zig from Scratch*

**C**:*Let's Build a Simple Database***C++**:*Build Your Own Redis from Scratch***C#**:*Build Your Own Database***Clojure**:*An Archaeology-Inspired Database***Crystal**:*Why you should build your own NoSQL Database***Go**:*Build Your Own Database from Scratch: From B+Tree To SQL in 3000 Lines***Go**:*Code a database in 45 steps: a series of test-driven small coding puzzles***Go**:*Build Your Own Redis from Scratch***JavaScript**:*Dagoba: an in-memory graph database***Python**:*DBDB: Dog Bed Database***Python**:*Write your own miniature Redis with Python***Ruby**:*Build your own fast, persistent KV store in Ruby***Rust**:*Build your own Redis client and server*

**C**:*Linux containers in 500 lines of code***Go**:*Build Your Own Container Using Less than 100 Lines of Go*[video]**Go**:*Building a container from scratch in Go***Python**:*A workshop on Linux containers: Rebuild Docker from Scratch***Python**:*A proof-of-concept imitation of Docker, written in 100% Python***Shell**:*Docker implemented in around 100 lines of bash*

**C**:*Home-grown bytecode interpreters***C**:*Virtual machine in C***C**:*Write your Own Virtual Machine***C**:*Writing a Game Boy emulator, Cinoop***C++**:*How to write an emulator (CHIP-8 interpreter)***C++**:*Emulation tutorial (CHIP-8 interpreter)***C++**:*Emulation tutorial (GameBoy emulator)***C++**:*Emulation tutorial (Master System emulator)*[video]**C++**:*NES Emulator From Scratch***Common Lisp**:*CHIP-8 in Common Lisp***JavaScript**:*GameBoy Emulation in JavaScript***Python**:*Emulation Basics: Write your own Chip 8 Emulator/Interpreter***Rust**:*0dmg: Learning Rust by building a partial Game Boy emulator*

**JavaScript**:*WTF is JSX (Let's Build a JSX Renderer)***JavaScript**:*A DIY guide to build your own React*[video]**JavaScript**:*Building React From Scratch***JavaScript**:*Gooact: React in 160 lines of JavaScript***JavaScript**:*Learn how React Reconciler package works by building your own lightweight React DOM***JavaScript**:*Build Yourself a Redux***JavaScript**:*Let’s Write Redux!*[video]**JavaScript**:*Redux: Implementing Store from Scratch***JavaScript**:*Build Your own Simplified AngularJS in 200 Lines of JavaScript***JavaScript**:*Make Your Own AngularJS***JavaScript**:*How to write your own Virtual DOM***JavaScript**:*Building a frontend framework, from scratch, with components (templating, state, VDOM)***JavaScript**:*Build your own React*[video]**JavaScript**:*Building a Custom React Renderer*

**C**:*Handmade Hero***C**:*How to Program an NES game in C*[video]**C**:*Chess Engine In C*[video]**C**:*Let's Make: Dangerous Dave*[video]**C**:*Learn Video Game Programming in C*[video]**C**:*Coding A Sudoku Solver in C*[video]**C**:*Coding a Rogue/Nethack RPG in C***C**:*On Tetris and Reimplementation***C++**:*Breakout***C++**:*Beginning Game Programming v2.0***C++**:*Tetris tutorial in C++ platform independent focused in game logic for beginners*[video]**C++**:*Remaking Cavestory in C++*[video]**C++**:*Reconstructing Cave Story***C++**:*Space Invaders from Scratch***C#**:*Learn C# by Building a Simple RPG***C#**:*Creating a Roguelike Game in C#***C#**:*Build a C#/WPF RPG*[video]**Go**:*Games With Go*[video]**Java**:*Code a 2D Game Engine using Java - Full Course for Beginners***Java**:*3D Game Development with LWJGL 3***JavaScript**:*2D breakout game using Phaser***JavaScript**:*How to Make Flappy Bird in HTML5 With Phaser***JavaScript**:*Developing Games with React, Redux, and SVG*[video]**JavaScript**:*Build your own 8-Ball Pool game from scratch***JavaScript**:*How to Make Your First Roguelike***JavaScript**:*Think like a programmer: How to build Snake using only JavaScript, HTML & CSS***Lua**:*BYTEPATH***Python**:*Developing Games With PyGame*[pdf]**Python**:*Making Games with Python & Pygame***Python**:*Roguelike Tutorial Revised***Ruby**:*Developing Games With Ruby***Ruby**:*Ruby Snake***Rust**:*Adventures in Rust: A Basic 2D Game***Rust**:*Roguelike Tutorial in Rust + tcod*

**Haskell**:*Reimplementing “git clone” in Haskell from the bottom up***JavaScript**:*Gitlet***JavaScript**:*Build GIT - Learn GIT***Python**:*Just enough of a Git client to create a repo, commit, and push itself to GitHub***Python**:*Write yourself a Git!***Python**:*ugit: Learn Git Internals by Building Git Yourself***Ruby**:*Rebuilding Git in Ruby*

**C**:*Beej's Guide to Network Programming***C**:*Let's code a TCP/IP stack***C / Python**:*Build your own VPN/Virtual Switch***Ruby**:*How to build a network stack in Ruby*

**C#**:*Neural Network OCR***F#**:*Building Neural Networks in F#: Part 1***F#**:*Building Neural Networks in F#: Part 2***Go**:*Build a multilayer perceptron with Golang***Go**:*How to build a simple artificial neural network with Go***Go**:*Building a Neural Net from Scratch in Go*[video]**JavaScript / Java**:*Neural Networks - The Nature of Code***JavaScript**:*Neural networks from scratch for JavaScript linguists (Part1 — The Perceptron)***Python**:*A Neural Network in 11 lines of Python***Python**:*Build Deep Learning From Scratch (reimplement PyTorch internals across 34 stages)***Python**:*Implement a Neural Network from Scratch***Python**:*Optical Character Recognition (OCR)***Python**:*Traffic signs classification with a convolutional network***Python**:*Generate Music using LSTM Neural Network in Keras***Python**:*An Introduction to Convolutional Neural Networks***Python**:*Neural Networks: Zero to Hero***Python**:*SlowTorch: Implementation of PyTorch from the ground up in 100% pure Python*

**Assembly**:*Writing a Tiny x86 Bootloader***Assembly**:*Baking Pi – Operating Systems Development*[video]**C**:*Building a software and hardware stack for a simple computer from scratch***C**:*Operating Systems: From 0 to 1***C**:*The little book about OS development***C**:*Roll your own toy UNIX-clone OS***C**:*Kernel 101 – Let’s write a Kernel***C**:*Kernel 201 – Let’s write a Kernel with keyboard and screen support***C**:*Build a minimal multi-tasking kernel for ARM from scratch***C**:*How to create an OS from scratch***C**:*Malloc tutorial***C**:*Hack the virtual memory***C**:*Learning operating system development using Linux kernel and Raspberry Pi***C**:*Operating systems development for Dummies*[video]**C++**:*Write your own Operating System***C++**:*Writing a Bootloader***Rust**:*Writing an OS in Rust***Rust**:*Add RISC-V Rust Operating System Tutorial***(any)**:*Linux from scratch*

**C**:*Video Game Physics Tutorial***C++**:*Game physics series by Allen Chou***C++**:*How to Create a Custom Physics Engine*[video]**C++**:*3D Physics Engine Tutorial***JavaScript**:*How Physics Engines Work***JavaScript**:*Broad Phase Collision Detection Using Spatial Partitioning***JavaScript**:*Build a simple 2D physics engine for JavaScript games*

**(any)**:*mal - Make a Lisp***Assembly**:*Jonesforth***C**:*Baby's First Garbage Collector***C**:*Build Your Own Lisp: Learn C and build your own programming language in 1000 lines of code***C**:*Writing a Simple Garbage Collector in C***C**:*C interpreter that interprets itself.***C**:*A C & x86 version of the "Let's Build a Compiler" by Jack Crenshaw***C**:*A journey explaining how to build a compiler from scratch***C++**:*Writing Your Own Toy Compiler Using Flex*[video]**C++**:*How to Create a Compiler***C++**:*Kaleidoscope: Implementing a Language with LLVM***F#**:*Understanding Parser Combinators*[video]**Elixir**:*Demystifying compilers by writing your own***Go**:*The Super Tiny Compiler*[video]**Go**:*Lexical Scanning in Go***Haskell**:*Let's Build a Compiler***Haskell**:*Write You a Haskell***Haskell**:*Write Yourself a Scheme in 48 Hours***Haskell**:*Write You A Scheme***Java**:*Crafting interpreters: A handbook for making programming languages***Java**:*Creating JVM Language***JavaScript**:*The Super Tiny Compiler***JavaScript**:*The Super Tiny Interpreter***JavaScript**:*Little Lisp interpreter***JavaScript**:*How to implement a programming language in JavaScript***JavaScript**:*Let’s go write a Lisp***OCaml**:*Writing a C Compiler***OCaml**:*Writing a Lisp, the series***Pascal**:*Let's Build a Compiler***Python**:*A Python Interpreter Written in Python***Python**:*lisp.py: Make your own Lisp interpreter***Python**:*How to Write a Lisp Interpreter in Python***Python**:*Let’s Build A Simple Interpreter*[video]**Python**:*Make Your Own Simple Interpreted Programming Language***Python**:*From Source Code To Machine Code: Build Your Own Compiler From Scratch***Racket**:*Beautiful Racket: How to make your own programming languages with Racket***Ruby**:*A Compiler From Scratch***Ruby**:*Markdown compiler from scratch in Ruby***Rust**:*Learning Parser Combinators With Rust***Swift**:*Building a LISP from scratch with Swift***TypeScript**:*Build your own WebAssembly Compiler*

**C**:*A Regular Expression Matcher***C**:*Regular Expression Matching Can Be Simple And Fast***Go**:*How to build a regex engine from scratch***JavaScript**:*Build a Regex Engine in Less than 40 Lines of Code***JavaScript**:*How to implement regular expressions in functional javascript using derivatives***JavaScript**:*Implementing a Regular Expression Engine***Perl**:*How Regexes Work***Python**:*Build Your Own Regular Expression Engines: Backtracking, NFA, DFA***Scala**:*No Magic: Regular Expressions*

**CSS**:*A search engine in CSS***Python**:*Building a search engine using Redis and redis-py***Python**:*Building a Vector Space Indexing Engine in Python*[video]**Python**:*Building A Python-Based Search Engine***Python**:*Making text search learn from feedback***Python**:*Finding Important Words in Text Using TF-IDF*

**C**:*Tutorial - Write a Shell in C***C**:*Let's build a shell!***C**:*Writing a UNIX Shell***C**:*Build Your Own Shell***C**: Write a shell in C** Go**:*Writing a simple shell in Go***Rust**:*Build Your Own Shell using Rust*

**JavaScript**:*JavaScript template engine in just 20 lines***JavaScript**:*Understanding JavaScript Micro-Templating***Python**:*Approach: Building a toy template engine in Python***Python**:*A Template Engine***Ruby**:*How to write a template engine in less than 30 lines of code*

**C**:*Build Your Own Text Editor***C++**:*Designing a Simple Text Editor*[video]**Python**:*Python Tutorial: Make Your Own Text Editor***Python**:*Create a Simple Python Text Editor!***Ruby**:*Build a Collaborative Text Editor Using Rails***Rust**:*Hecto: Build your own text editor in Rust*

**Python**:*Developing a License Plate Recognition System with Machine Learning in Python***Python**:*Building a Facial Recognition Pipeline with Deep Learning in Tensorflow*

**C#**:*Writing a Web Server from Scratch***Node.js**:*Build Your Own Web Server From Scratch In JavaScript***Node.js**:*Let's code a web server from scratch with NodeJS Streams***Node.js**:*lets-build-express***PHP**:*Writing a webserver in pure PHP***Python**:*A Simple Web Server***Python**:*Let’s Build A Web Server.***Python**:*Web application from scratch***Python**:*Building a basic HTTP Server from scratch in Python***Python**:*Implementing a RESTful Web API with Python & Flask***Ruby**:*Building a simple websockets server from scratch in Ruby*

**(any)**:*From NAND to Tetris: Building a Modern Computer From First Principles***(any)**: build-your-own-x-vibe-coding: BYOX-style tutorials adapted for vibe coding** Alloy**:*The Same-Origin Policy***C**:*How to Write a Video Player in Less Than 1000 Lines***C**:*Learn how to write a hash table in C***C**:*The very basics of a terminal emulator***C**:*Write a System Call***C**:*Sol - An MQTT broker from scratch***C++**:*Build your own VR headset for $200***C++**:*How X Window Managers work and how to write one***C++**:*Writing a Linux Debugger***C++**:*How a 64k intro is made***C++**:*Make your own Game Engine***C#**:*C# Networking: Create a TCP chater server, TCP games, UDP Pong and more***C#**:*Loading and rendering 3D skeletal animations from scratch in C# and GLSL***Clojure**:*Building a spell-checker***Go**:*Build A Simple Terminal Emulator In 100 Lines of Golang***Go**:*Let's Create a Simple Load Balancer***Go**:*Video Encoding from Scratch*[video]**Java**:*How to Build an Android Reddit App***JavaScript**:*Build Your Own Module Bundler - Minipack***JavaScript**:*Learn JavaScript Promises by Building a Promise from Scratch***JavaScript**:*Implementing promises from scratch (TDD way)***JavaScript**:*Implement your own — call(), apply() and bind() method in JavaScript***JavaScript**:*JavaScript Algorithms and Data Structures***JavaScript**:*Build a ride hailing app with React Native***JavaScript**:*Build Your Own AdBlocker in (Literally) 10 Minutes***Kotlin**:*Build Your Own Cache***Lua**:*Building a CDN from Scratch to Learn about CDN***Nim**:*Writing a Redis Protocol Parser***Nim**:*Writing a Build system***Nim**:*Writing a MiniTest Framework***Nim**:*Writing a DMIDecode Parser***Nim**:*Writing a INI Parser***Nim**:*Writing a Link Checker***Nim**:*Writing a URL Shortening Service***Node.js**:*Build a static site generator in 40 lines with Node.js***Node.js**:*Building A Simple Single Sign On(SSO) Server And Solution From Scratch In Node.js.***Node.js**:*How to create a real-world Node CLI app with Node***Node.js**:*Build a DNS Server in Node.js***Node.js**:*Build a Synchronization Engine with Node.js and Y.js***PHP**:*Write your own MVC from scratch in PHP***PHP**:*Make your own blog***PHP**:*Modern PHP Without a Framework***PHP**:*Code a Web Search Engine in PHP*[video]**Python**:*Build a Deep Learning Library***Python**:*How to Build a Kick-Ass Mobile Document Scanner in Just 5 Minutes***Python**:*Continuous Integration System***Python**:*Recommender Systems in Python: Beginner Tutorial***Python**:*Write SMS-spam detector with Scikit-learn***Python**:*A Simple Content-Based Recommendation Engine in Python***Python**:*Stock Market Predictions with LSTM in Python***Python**:*Building a simple Generative Adversarial Network (GAN) using Tensorflow***Python**:*Learn ML Algorithms by coding: Decision Trees***Python**:*JSON Decoding Algorithm***Python**:*Build your own Git plugin with python***Ruby**:*A Pedometer in the Real World***Ruby**:*Creating a Linux Desktop application with Ruby***Rust**:*Building a DNS server in Rust***Rust**:*Writing Scalable Chat Service from Scratch***Rust**:*WebGL + Rust: Basic Water Tutorial***TypeScript**:*Tiny Package Manager: Learns how npm or Yarn works*

- Submissions welcome, just send a PR, or
[create an issue](https://github.com/codecrafters-io/build-your-own-x/issues/new) - Help us review
[pending submissions](https://github.com/codecrafters-io/build-your-own-x/issues)by leaving comments and "reactions"

This repository is the work of [many contributors](https://github.com/codecrafters-io/build-your-own-x/graphs/contributors). It was started by [Daniel Stefanovic](https://github.com/danistefanovic), and is now maintained by [CodeCrafters, Inc.](https://codecrafters.io) To the extent possible under law, [CodeCrafters, Inc.](https://codecrafters.io) has waived all copyright and related or neighboring rights to this work.
