CodeCrafters – Build Your Own repo CodeCrafters' 'Build Your Own ' repository compiles step-by-step guides for recreating technologies from scratch, covering topics from 3D renderers and AI models to blockchain and web browsers. The repo includes guides for building a large language model, diffusion models, and a RAG system in Python. 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.