Master programming by recreating your favorite technologies from scratch.

★ 561,456⑂ 52,537👁 6,812⑃ 798● 966▤ 0◈ 0
MarkdownCreated 2018-05-09codecrafters.io
561,456
stars
+266+2,621+9,772
52,537
forks
6,812
watchers
798
prs
966
issues
0
releases
0
discussions

README

Build your own <insert-technology-here>

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
 AI Model
 Augmented Reality
 BitTorrent Client
 Blockchain / Cryptocurrency
 Bot
 Command-Line Tool
 Database
 Docker
 Emulator / Virtual Machine
 Front-end Framework / Library
 Game
 Git
 Memory Allocator
 Network Stack
 Neural Network
 Operating System
 Physics Engine
 Processor
 Programming Language
 Regex Engine
 Search Engine
 Shell
 Template Engine
 Text Editor
 Visual Recognition System
 Voxel Engine
 Web Browser
 Web Server
 Uncategorized

 Tutorials

 Build your own Distributed Systems
 Java: _Building Your Own Kafka-like System From Scratch: A Step-by-Step Guide_

 Build your own 3D Renderer

 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_

 Build your own AI Model
 Python: _A Large Language Model (LLM)_
 Python: _Diffusion Models for Image Generation_
 Python: _RAG for Document Search_

 Build your own Augmented Reality

 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_ [video]
 Python: _Augmented Reality with Python and OpenCV_

 Build your own BitTorrent Client

 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_

 Build your own Blockchain / Cryptocurrency

 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: _Wri

Top issues

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON