"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.
| Lang | Topic | Link |
|---|---|---|
| C++ | Introduction to Ray Tracing | scratchapixel |
| C++ | How OpenGL works (500 lines) | ssloy/tinyrenderer |
| C++ | Raycasting engine of Wolfenstein 3D | lodev.org |
| C++ | Ray Tracing in One Weekend | raytracing.github.io |
| C++ | Rasterization: Practical Implementation | scratchapixel |
| C# | 3D soft engine in C#, TypeScript, JS | davrous.com |
| JS | Computer Graphics from scratch | gabrielgambetta.com |
| Python | A 3D Modeller | aosabook.org |
| Lang | Topic | Link |
|---|---|---|
| Python | Large Language Model (LLM) from scratch | rasbt/LLMs-from-scratch |
| Python | Diffusion Models for Image Generation | huggingface.co |
| Python | RAG for Document Search | langchain-ai/rag-from-scratch |
| Lang | Topic | Link |
|---|---|---|
| C# | AR App Tutorial with Vuforia & Unity | YouTube 🎥 |
| C# | AR Portal Tutorial with Unity | YouTube 🎥 |
| Python | Augmented Reality with Python & OpenCV | bitesofcode |
| Lang | Topic | Link |
|---|---|---|
| C# | Building a BitTorrent client from scratch | seanjoflynn.com |
| Go | Building a BitTorrent client in Go | jse.li |
| Nim | Writing a Bencode Parser | nimdays |
| Node.js | Write your own bittorrent client | allenkim67 |
| Python | A BitTorrent client in Python 3.5 | markuseliasson.se |
| Lang | Topic | Link |
|---|---|---|
| Go | Building Blockchain in Go | jeiwan.net |
| Go | Code your own blockchain in <200 lines | medium/@mycoralhealth |
| Java | Creating Your First Blockchain with Java | medium |
| JavaScript | A cryptocurrency in <1500 lines | conradoqg/naivecoin |
| JavaScript | Creating a blockchain with JavaScript | SavjeeTutorials/SavjeeCoin |
| Python | Learn Blockchains by Building One | hackernoon |
| Python | Build your own blockchain | ecomunsing.com |
| TypeScript | Naivecoin: building a cryptocurrency | lhartikk.github.io |
| Rust | Building A Blockchain in Rust & Substrate | hackernoon |
| Lang | Topic | Link |
|---|---|---|
| Node.js | Create a Discord bot | discordjs.guide |
| Node.js | Responsive Telegram bot | sohamkamani.com |
| Python | Build Your First Slack Bot | fullstackpython.com |
| Python | Create a Telegram Bot Using Python | freecodecamp.org |
| Python | Create a Twitter Bot with Tweepy | medium |
| Lang | Topic | Link |
|---|---|---|
| Go | Visualize git contributions with Go | flaviocopes.com |
| Go | Build a CLI app: lolcat | flaviocopes.com |
| Node.js | Create a CLI tool in JavaScript | citw.dev |
| Rust | Command line apps in Rust | rust-cli.github.io |
| Lang | Topic | Link |
|---|---|---|
| C | Let's Build a Simple Database | cstack.github.io/db_tutorial |
| Go | Build Your Own Database from Scratch | build-your-own.org |
| Go | Build Your Own Redis from Scratch | build-redis-from-scratch.dev |
| JavaScript | Dagoba: an in-memory graph database | aosabook.org |
| Python | DBDB: Dog Bed Database | aosabook.org |
| Ruby | Build your own fast, persistent KV store in Ruby | dineshgowda.com |
| Lang | Topic | Link |
|---|---|---|
| C | Linux containers in 500 lines of code | blog.lizzie.io |
| Go | Build Your Own Container Using <100 Lines of Go | infoq.com |
| Python | Rebuild Docker from Scratch | Fewbytes/rubber-docker |
| Shell | Docker implemented in ~100 lines of bash | p8952/bocker |
| Lang | Topic | Link |
|---|---|---|
| C | Write your Own Virtual Machine (LC3) | justinmeiners.github.io |
| C | Writing a Game Boy emulator, Cinoop | cturt.github.io |
| C++ | How to write an emulator (CHIP-8) | multigesture.net |
| C++ | NES Emulator From Scratch | YouTube 🎥 |
| JavaScript | GameBoy Emulation in JavaScript | imrannazar.com |
| Rust | 0dmg: Learning Rust by building a Game Boy emulator | jeremybanks.github.io/0dmg |
| Lang | Topic | Link |
|---|---|---|
| JavaScript | A DIY guide to build your own React | hexacta/didact |
| JavaScript | Building React From Scratch | YouTube 🎥 |
| JavaScript | Build Yourself a Redux | zapier.com |
| JavaScript | Build Your own Simplified AngularJS in 200 Lines | blog.mgechev.com |
| JavaScript | How to write your own Virtual DOM | medium/@deathmood |
| JavaScript | Build your own React | pomb.us |
| Lang | Topic | Link |
|---|---|---|
| C | Handmade Hero | handmadehero.org |
| C | How to Program an NES game in C | nesdoug.com |
| C++ | Breakout | learnopengl.com |
| C++ | Beginning Game Programming v2.0 | lazyfoo.net |
| C++ | Tetris tutorial in C++ | javilop.com |
| Go | Games With Go | YouTube 🎥 |
| JavaScript | 2D breakout arcade clone | MDN |
| Lang | Topic | Link |
|---|---|---|
| Go | Build Your Own Git | flaviocopes/go-git-docs |
| Lang | Topic | Link |
|---|---|---|
| C | Writing a Memory Allocator | arjunsreedharan.org |
| C | A tiny malloc | bits-and-hacks.de |
| Lang | Topic | Link |
|---|---|---|
| Python | Make Your Own Neural Network | madebyollie/neural-network-from-scratch |
| Lang | Topic | Link |
|---|---|---|
| C | Writing a Simple OS from Scratch | cs.bham.ac.uk |
| C | os-tutorial: How to Build an OS from Scratch | tuhdo/os01 |
| C | Writing a Bootloader | 3zanders.github.io |
| Rust | Writing an OS in Rust | os.phil-opp.com |
| Lang | Topic | Link |
|---|---|---|
| C++ | Build Your Own Physics Engine | buildyourown.org |
| Lang | Topic | Link |
|---|---|---|
| Hardware | Designing a RISC-V CPU | ultraembedded/bare_metal_riscv |
| Lang | Topic | Link |
|---|---|---|
| C | Building a LISP from scratch | buildyourownlisp.com |
| C | How to Write a Lisp Interpreter in 96 Lines of C | samadhi.ninja |
| Haskell | Write Yourself a Scheme in 48 Hours | wikibooks |
| Python | Build Your Own Lisp | khalidabduhacker |
| Python | Lisp in Python | norvig.com |
| Lang | Topic | Link |
|---|---|---|
| C | How to Implement a Regular Expression Engine | blog.daan.one |
| Lang | Topic | Link |
|---|---|---|
| Python | Building a Search Engine from Scratch | analyticssteps.com |
| Lang | Topic | Link |
|---|---|---|
| C | Build Your Own Shell | Making-1/Building-your-own-Unix-Shell |
| Rust | Writing a CLI Shell in Rust | MatthiasBillingham/writing-a-unix-shell-in-rust |
| Lang | Topic | Link |
|---|---|---|
| Python | Template Engine in 500 Lines | aosabook.org |
| Lang | Topic | Link |
|---|---|---|
| C++ | Build a Text Editor | aosabook.org |
| Lang | Topic | Link |
|---|---|---|
| Python | Building a Facial Recognition System | medium/@madhuram |
| Lang | Topic | Link |
|---|---|---|
| C++ | Tiny Voxel Engine | voxinagency/voxel-engine |
| Lang | Topic | Link |
|---|---|---|
| C++ | Browser Engine from Scratch | limpet.net |
| Python | How to build a web browser from scratch | YouTube 🎥 |
| Lang | Topic | Link |
|---|---|---|
| C# | Building a Web Server from Scratch | samba73.com |
| Go | Building a Web Server in Go | jaspero.so |
| Python | Python Web Server from Scratch | aosabook.org |
Source: codecrafters-io/build-your-own-x