📚 Build Your Own X

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

A curated collection of step-by-step guides for building your favorite technologies from scratch.

🎮 3D Renderer

LangTopicLink
C++Introduction to Ray Tracingscratchapixel
C++How OpenGL works (500 lines)ssloy/tinyrenderer
C++Raycasting engine of Wolfenstein 3Dlodev.org
C++Ray Tracing in One Weekendraytracing.github.io
C++Rasterization: Practical Implementationscratchapixel
C#3D soft engine in C#, TypeScript, JSdavrous.com
JSComputer Graphics from scratchgabrielgambetta.com
PythonA 3D Modelleraosabook.org

🤖 AI Model

LangTopicLink
PythonLarge Language Model (LLM) from scratchrasbt/LLMs-from-scratch
PythonDiffusion Models for Image Generationhuggingface.co
PythonRAG for Document Searchlangchain-ai/rag-from-scratch

🌐 Augmented Reality

LangTopicLink
C#AR App Tutorial with Vuforia & UnityYouTube 🎥
C#AR Portal Tutorial with UnityYouTube 🎥
PythonAugmented Reality with Python & OpenCVbitesofcode

📡 BitTorrent Client

LangTopicLink
C#Building a BitTorrent client from scratchseanjoflynn.com
GoBuilding a BitTorrent client in Gojse.li
NimWriting a Bencode Parsernimdays
Node.jsWrite your own bittorrent clientallenkim67
PythonA BitTorrent client in Python 3.5markuseliasson.se

⛓️ Blockchain / Cryptocurrency

LangTopicLink
GoBuilding Blockchain in Gojeiwan.net
GoCode your own blockchain in <200 linesmedium/@mycoralhealth
JavaCreating Your First Blockchain with Javamedium
JavaScriptA cryptocurrency in <1500 linesconradoqg/naivecoin
JavaScriptCreating a blockchain with JavaScriptSavjeeTutorials/SavjeeCoin
PythonLearn Blockchains by Building Onehackernoon
PythonBuild your own blockchainecomunsing.com
TypeScriptNaivecoin: building a cryptocurrencylhartikk.github.io
RustBuilding A Blockchain in Rust & Substratehackernoon

🤖 Bot

LangTopicLink
Node.jsCreate a Discord botdiscordjs.guide
Node.jsResponsive Telegram botsohamkamani.com
PythonBuild Your First Slack Botfullstackpython.com
PythonCreate a Telegram Bot Using Pythonfreecodecamp.org
PythonCreate a Twitter Bot with Tweepymedium

🖥️ Command-Line Tool

LangTopicLink
GoVisualize git contributions with Goflaviocopes.com
GoBuild a CLI app: lolcatflaviocopes.com
Node.jsCreate a CLI tool in JavaScriptcitw.dev
RustCommand line apps in Rustrust-cli.github.io

💾 Database

LangTopicLink
CLet's Build a Simple Databasecstack.github.io/db_tutorial
GoBuild Your Own Database from Scratchbuild-your-own.org
GoBuild Your Own Redis from Scratchbuild-redis-from-scratch.dev
JavaScriptDagoba: an in-memory graph databaseaosabook.org
PythonDBDB: Dog Bed Databaseaosabook.org
RubyBuild your own fast, persistent KV store in Rubydineshgowda.com

🐳 Docker

LangTopicLink
CLinux containers in 500 lines of codeblog.lizzie.io
GoBuild Your Own Container Using <100 Lines of Goinfoq.com
PythonRebuild Docker from ScratchFewbytes/rubber-docker
ShellDocker implemented in ~100 lines of bashp8952/bocker

🎮 Emulator / Virtual Machine

LangTopicLink
CWrite your Own Virtual Machine (LC3)justinmeiners.github.io
CWriting a Game Boy emulator, Cinoopcturt.github.io
C++How to write an emulator (CHIP-8)multigesture.net
C++NES Emulator From ScratchYouTube 🎥
JavaScriptGameBoy Emulation in JavaScriptimrannazar.com
Rust0dmg: Learning Rust by building a Game Boy emulatorjeremybanks.github.io/0dmg

⚛️ Front-end Framework / Library

LangTopicLink
JavaScriptA DIY guide to build your own Reacthexacta/didact
JavaScriptBuilding React From ScratchYouTube 🎥
JavaScriptBuild Yourself a Reduxzapier.com
JavaScriptBuild Your own Simplified AngularJS in 200 Linesblog.mgechev.com
JavaScriptHow to write your own Virtual DOMmedium/@deathmood
JavaScriptBuild your own Reactpomb.us

🎲 Game

LangTopicLink
CHandmade Herohandmadehero.org
CHow to Program an NES game in Cnesdoug.com
C++Breakoutlearnopengl.com
C++Beginning Game Programming v2.0lazyfoo.net
C++Tetris tutorial in C++javilop.com
GoGames With GoYouTube 🎥
JavaScript2D breakout arcade cloneMDN

🌿 Git

LangTopicLink
GoBuild Your Own Gitflaviocopes/go-git-docs

💠 Memory Allocator

LangTopicLink
CWriting a Memory Allocatorarjunsreedharan.org
CA tiny mallocbits-and-hacks.de

🧠 Neural Network

LangTopicLink
PythonMake Your Own Neural Networkmadebyollie/neural-network-from-scratch

🖥️ Operating System

LangTopicLink
CWriting a Simple OS from Scratchcs.bham.ac.uk
Cos-tutorial: How to Build an OS from Scratchtuhdo/os01
CWriting a Bootloader3zanders.github.io
RustWriting an OS in Rustos.phil-opp.com

⚡ Physics Engine

LangTopicLink
C++Build Your Own Physics Enginebuildyourown.org

🔧 Processor

LangTopicLink
HardwareDesigning a RISC-V CPUultraembedded/bare_metal_riscv

💻 Programming Language

LangTopicLink
CBuilding a LISP from scratchbuildyourownlisp.com
CHow to Write a Lisp Interpreter in 96 Lines of Csamadhi.ninja
HaskellWrite Yourself a Scheme in 48 Hourswikibooks
PythonBuild Your Own Lispkhalidabduhacker
PythonLisp in Pythonnorvig.com

🔍 Regex Engine

LangTopicLink
CHow to Implement a Regular Expression Engineblog.daan.one

🔎 Search Engine

LangTopicLink
PythonBuilding a Search Engine from Scratchanalyticssteps.com

🐚 Shell

LangTopicLink
CBuild Your Own ShellMaking-1/Building-your-own-Unix-Shell
RustWriting a CLI Shell in RustMatthiasBillingham/writing-a-unix-shell-in-rust

📝 Template Engine

LangTopicLink
PythonTemplate Engine in 500 Linesaosabook.org

✏️ Text Editor

LangTopicLink
C++Build a Text Editoraosabook.org

👁️ Visual Recognition System

LangTopicLink
PythonBuilding a Facial Recognition Systemmedium/@madhuram

🎮 Voxel Engine

LangTopicLink
C++Tiny Voxel Enginevoxinagency/voxel-engine

🌐 Web Browser

LangTopicLink
C++Browser Engine from Scratchlimpet.net
PythonHow to build a web browser from scratchYouTube 🎥

🖥️ Web Server

LangTopicLink
C#Building a Web Server from Scratchsamba73.com
GoBuilding a Web Server in Gojaspero.so
PythonPython Web Server from Scratchaosabook.org

Source: codecrafters-io/build-your-own-x