Skip to content
76

Build Your Own X

Master programming by recreating your favorite technologies from scratch.

551k stars51,718 forks359 entriesLast push Jul 14, 2026 (2 months ago)License none

This page lists names, links and short descriptions. The original list on GitHub is the source and belongs to its authors.

Tutorials

Java: Building Your Own Kafka-like System From Scratch: A Step-by-Step Guide

C++: Introduction to Ray Tracing: a Simple Method for Creating 3D Images

C++: How OpenGL works: software rendering in 500 lines of code

, course of computer graphics teaching how Opengl and rendering works, teaching how to build a simpler version of OpenGL.

In 7 listsDetails

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)

Implementing a ChatGPT-like LLM from scratch, step by step

In 5 listsDetails

Python: Diffusion Models for Image Generation

Python: RAG for Document Search

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

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

In 2 lists

Crystal: Write your own blockchain and PoW algorithm using Crystal

In 2 lists

Go: Building Blockchain in Go

In 2 lists

Go: Code your own blockchain in less than 200 lines of Go

In 2 lists

Java: Creating Your First Blockchain with Java

In 2 lists

JavaScript: A cryptocurrency implementation in less than 1500 lines of code

In 2 lists

JavaScript: Build your own Blockchain in JavaScript

In 2 lists

JavaScript: Learn & Build a JavaScript Blockchain

In 2 lists

JavaScript: Creating a blockchain with JavaScript

In 2 lists

JavaScript: How To Launch Your Own Production-Ready Cryptocurrency

In 2 lists

JavaScript: Writing a Blockchain in Node.js

Kotlin: Let’s implement a cryptocurrency in Kotlin

In 2 lists

Python: Learn Blockchains by Building One

In 2 lists

Python: Build your own blockchain: a Python tutorial

In 2 lists

Python: A Practical Introduction to Blockchain with Python

In 2 lists

Python: Let’s Build the Tiniest Blockchain

In 2 lists

Ruby: Programming Blockchains Step-by-Step (Manuscripts Book Edition)

In 2 lists

Scala: How to build a simple actor-based blockchain

In 2 lists

TypeScript: Naivecoin: a tutorial for building a cryptocurrency

In 2 lists

TypeScript: NaivecoinStake: a tutorial for building a cryptocurrency with the Proof of Stake consensus

In 2 lists

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

Python: How To Make A Reddit Bot

[video]

Python: How To Create a Telegram Bot Using Python

Python: Create a Twitter Bot in Python Using Tweepy

Python: Creating Reddit Bot with Python & PRAW

[video]

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

, thanks to cstack

In 3 lists

C++: Build Your Own Redis from Scratch

by James Smith

In 2 lists

C#: Build Your Own Database

Clojure: An Archaeology-Inspired Database

Crystal: Why you should build your own NoSQL Database

Brief overview of NoSQL databases and the spectrum of schema, along with a very basic implementation of a NoSQL database using the Crystal programming language.

In 2 lists

Go: Build Your Own Database from Scratch: From B+Tree To SQL in 3000 Lines

by James Smith

In 2 lists

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

Go: Building a container from scratch in Go

[video]

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

Docker implemented in around 100 lines of bash.

In 5 listsDetails

C: Home-grown bytecode interpreters

C: Virtual machine in C

C: Write your Own Virtual Machine

by Justin Meiners and Ryan Pendleton

In 3 lists

C: Writing a Game Boy emulator, Cinoop

In 2 lists

C++: How to write an emulator (CHIP-8 interpreter)

A guide to developing a CHIP-8 interpreter in C/C++.

In 2 lists

C++: Emulation tutorial (CHIP-8 interpreter)

C++: Emulation tutorial (GameBoy emulator)

Another series of posts documenting the building of an emulator.

In 2 lists

C++: Emulation tutorial (Master System emulator)

C++: NES Emulator From Scratch

[video]

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

JavaScript: Building React From Scratch

[video]

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!

JavaScript: Redux: Implementing Store from Scratch

[video]

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

In 2 lists

JavaScript: Building a Custom React Renderer

[video]

C: Handmade Hero

Videos on making a game from start to finish, source code for $15.

In 4 lists

C: How to Program an NES game in C

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

[video]

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

C++: Remaking Cavestory in C++

[video]

C++: Reconstructing Cave Story

[video]

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

Go: Games With Go

[video]

Java: Code a 2D Game Engine using Java - Full Course for Beginners

[video]

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

JavaScript: Build your own 8-Ball Pool game from scratch

[video]

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

Python: Making Games with Python & Pygame

[pdf]

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: Malloc is not magic -- Implementing your own memory allocator

C: Beej's Guide to Network Programming

In 2 lists

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

JavaScript / Java: Neural Networks - The Nature of Code

[video]

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

Build neural networks and language models from first principles.

In 3 lists

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

C: Building a software and hardware stack for a simple computer from scratch

[video]

C: Operating Systems: From 0 to 1

Bootstrap yourself to write an OS from scratch by Do Hoang Tu

In 3 lists

C: The little book about OS development

by Erik Helin and Adam Renberg

In 3 lists

C: Roll your own toy UNIX-clone OS

by James Molloy

In 3 lists

C: Kernel 101 – Let’s write a Kernel

In 2 lists

C: Kernel 201 – Let’s write a Kernel with keyboard and screen support

C: Build a minimal multi-tasking kernel for ARM from scratch

by Jim Huang

In 2 lists

C: How to create an OS from scratch

How to create an OS from scratch

In 4 lists

C: Malloc tutorial

C: Hack the virtual memory

C: Learning operating system development using Linux kernel and Raspberry Pi

Learning operating system development using Linux kernel and Raspberry Pi

In 4 lists

C: Operating systems development for Dummies

by Leo Whitehead

In 2 lists

C++: Write your own Operating System

[video]

In 2 lists

C++: Writing a Bootloader

by Alex Parker

In 3 lists

Rust: Writing an OS in Rust

A blog series creating a small operating system in Rust

In 5 listsDetails

Rust: Add RISC-V Rust Operating System Tutorial

by Stephen Marz

In 2 lists

(any): Linux from scratch

C: Video Game Physics Tutorial

Part I: Intro to Rigid Body Dynamics.

In 2 lists

C++: Game physics series by Allen Chou

C++: How to Create a Custom Physics Engine

C++: 3D Physics Engine Tutorial

[video]

JavaScript: How Physics Engines Work

JavaScript: Broad Phase Collision Detection Using Spatial Partitioning

JavaScript: Build a simple 2D physics engine for JavaScript games

Verilog: From Blinker to RISC-V

Learning FPGA, yosys, nextpnr, and RISC-V

In 2 lists

(any): mal - Make a Lisp

In 2 lists

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

by Matthew Plant

In 2 lists

C: C interpreter that interprets itself.

Write a simple interpreter of C. Inspired by c4 and largely based on it.

In 2 lists

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

A Compiler Writing Journey

In 4 lists

C++: Writing Your Own Toy Compiler Using Flex

C++: How to Create a Compiler

[video]

C++: Kaleidoscope: Implementing a Language with LLVM

F#: Understanding Parser Combinators

Elixir: Demystifying compilers by writing your own

[video]

Go: The Super Tiny Compiler

Go: Lexical Scanning in Go

[video]

Haskell: Let's Build a Compiler

Haskell: Write You a Haskell

In 2 lists

Haskell: Write Yourself a Scheme in 48 Hours

Haskell: Write You A Scheme

Java: Crafting interpreters: A handbook for making programming languages

by Robert Nystrom

In 2 lists

Java: Creating JVM Language

JavaScript: The Super Tiny Compiler

snowman: Possibly the smallest compiler ever

In 2 lists

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

and (An ((Even Better) Lisp) Interpreter (in Python)) - a couple of famous articles by Peter Norvig.

In 2 lists

Python: Let’s Build A Simple Interpreter

Series of articles explaining the basics of compilers and interpreters and how to build one.

In 2 lists

Python: Make Your Own Simple Interpreted Programming Language

[video]

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

by Matthew Butterick

In 2 lists

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

On non-backtracking engines. A follow up includes comparisons of RE2 and PCRE performance.

In 3 lists

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

Python: Building A Python-Based Search Engine

[video]

Python: Making text search learn from feedback

Python: Finding Important Words in Text Using TF-IDF

C: Tutorial - Write a Shell in C

by Stephen Brennan

In 2 lists

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

In 4 listsDetails

C++: Designing a Simple Text Editor

Python: Python Tutorial: Make Your Own Text Editor

[video]

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++: Let's Make a Voxel Engine

Rust: Let's build a browser engine

by Matt Brubeck

In 2 lists

Python: Browser Engineering

by Pavel Panchekha and Chris Harrelson

In 2 lists

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

In 2 lists

(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

In 2 lists

C++: Build your own VR headset for $200

C++: How X Window Managers work and how to write one

C++: Writing a Linux Debugger

by Sy Brand

In 2 lists

C++: How a 64k intro is made

C++: Make your own Game Engine

For the engine programmers and the insane: save yourself some trouble and watch this instead of making yet another game engine ^^

In 2 lists

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

~120-line Go weekend project building a simple video encoder from scratch (YUV420P → RLE → DEFLATE).

In 2 lists

Java: How to Build an Android Reddit App

[video]

JavaScript: Build Your Own Module Bundler - Minipack

📦 A simplified example of a modern module bundler written in JavaScript

In 2 lists

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

📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings

In 9 listsDetails

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

Python: Build a Deep Learning Library

[video]

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

See category
94

Awesome C++

fffaraz/awesome-cpp

A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.

Fresh★ 74k1358 entriesPushed yesterday
89

Awesome Algorithms

tayllan/awesome-algorithms

A curated list of awesome places to learn and/or practice algorithms.

Fresh★ 26k35 entriesPushed 7 days ago
86

Awesome Low Level Design

ashishps1/awesome-low-level-design

Learn Low Level Design (LLD) and prepare for interviews using free resources.

Fresh★ 27k64 entriesPushed 1 month ago
86

Awesome English

yvoronoy/awesome-english

A collection of awesome study resources for learners of English.

Fresh★ 4.1k152 entriesPushed 18 days ago
84

Awesome Product Management

dend/awesome-product-management

🚀 A curated list of awesome resources for product/program managers to learn and grow.

Fresh★ 2.4k154 entriesPushed 22 days ago
84

awesome-speaking

matteofigus/awesome-speaking

Resources about public speaking

Fresh★ 2k38 entriesPushed 18 days ago