Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cweagans/awesome-diy-software

A curated list of awesome DIY software.
https://github.com/cweagans/awesome-diy-software

List: awesome-diy-software

Last synced: about 2 months ago
JSON representation

A curated list of awesome DIY software.

Awesome Lists containing this project

README

        

---
title: Awesome DIY Software
---

# awesome-diy-software

A curated list of awesome DIY software. Inspired by [awesome-go](https://github.com/avelino/awesome-go) and [this HN post](https://news.ycombinator.com/item?id=16591918).

What awesome-diy-software has in common:

- Describe a technology or feature by implementation.
- Ideally in no more than few thousands lines of code (and not just 10-20 line code snippets).
- Idea is to teach about underlying technology by a hands-on project, which is not overwhelming like trying to implement full-feature game engine and yet captures the essence of technology.
- All have the "Weekend Projects" feel


## Compilers

- [The Super Tiny Compiler](https://github.com/jamiebuilds/the-super-tiny-compiler)
- [Let's Build a Compiler](https://compilers.iecc.com/crenshaw/)

## Cryptocurrency

- [Nativecoin - build your own crypto-currency](https://lhartikk.github.io/)

## Game Development

- [Unity's roll-a-ball tutorial](https://unity3d.com/learn/tutorials/s/roll-ball-tutorial) pretty good for starting out with their IDE and also gives some decent exposure to C# basics.

## Interpreters: Lisp Based

- [Write You a Scheme](https://github.com/write-you-a-scheme-v2/scheme) Haskell to write a Scheme!
- [Build Your Own Lisp](http://www.buildyourownlisp.com/)
- [Scheme from Scratch](http://peter.michaux.ca/articles/scheme-from-scratch-introduction)
- [Make a LISP](https://github.com/kanaka/mal)
- [Writing an Interpreter in Go](https://interpreterbook.com/)

## Image Processing and Computer Vision

- [Build a Kick-Ass Mobile Document](https://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/)

## Interpreters: Other (Non - Lisp)

There is a separate section, for lisp interpreters

- [Crafting Interpreters](http://www.craftinginterpreters.com/)
- [Create your own programming language](http://createyourproglang.com/)

## Java Virtual Machine

- [Simple.vm](https://github.com/skx/simple.vm)

## Laravel

- [Writing a full-featured multi-tenant Laravel app from scratch](https://medium.com/@ashokgelal/writing-a-full-featured-multi-tenant-laravel-app-from-scratch-a0e1a7350d9d)
- [Let's Build A Forum with Laravel and TDD](https://laracasts.com/series/lets-build-a-forum-with-laravel)

## Operating Systems

- [nand2tetris](http://nand2tetris.org/)
- [Containers in 500 lines](https://blog.lizzie.io/linux-containers-in-500-loc.html)
- [Malloc tutorial](https://danluu.com/malloc-tutorial/)
- [Bitwise](https://github.com/pervognsen/bitwise) - An educational project to create a software/hardware stack for a computer from scratch.
- [Baby's First Garbage Collector](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/)
- [A TDD approach for building a simple microprocessor model in Python](http://joaoventura.net/blog/2017/simple-microprocessor/)
- [Linux From Scratch](http://www.linuxfromscratch.org/)

## Regular Expressions

- [A Regular Expression Matcher](https://www.cs.princeton.edu/courses/archive/spr09/cos333/beautiful.html)

## Retracers and 3D Rendering

- [Build your own 3D renderer](https://avik-das.github.io/build-your-own-raytracer/)
- [Ray Tracing in One Weekend](https://www.amazon.com/dp/B01B5AODD8)

## Software renderer

- [learn how the principles of computer rendering work](https://github.com/ssloy/tinyrenderer/wiki/Lesson-1:-Bresenham%E2%80%99s-Line-Drawing-Algorithm)

## Storage and Databases

- [Build a simple database](https://cstack.github.io/db_tutorial/)
- [Implementing a Key-Value Store](http://codecapsule.com/2012/11/07/implementing-a-key-value-store-part-1-what-are-key-value-stores-and-why-implement-one/)
- [Build your own Redis](https://rohitpaulk.com/articles/redis-0)

## Text Editor

- [Kilo: Build Your Own Text Editor](https://viewsourcecode.org/snaptoken/kilo/)

## Version Control

- [Implements the basics of the git version control system](http://gitlet.maryrosecook.com/docs/gitlet.html)

## Web Apps: Usage

These are tutorials for learning to use web frameworks:

- [Some useful links for React.js](https://github.com/markerikson/react-redux-links/)
- [How to Build Tinder with React Native & Expo](https://www.udemy.com/how-to-build-tinder/)
- [Writing a full-featured multi-tenant web app from scratch](https://medium.com/@ashokgelal/writing-a-full-featured-multi-tenant-laravel-app-from-scratch-a0e1a7350d9d)

## Web frameworks: Internals

These tutorials are geared towards building a frontend web framework and can be used to get a better understanding of internals.

- [Build your own React](https://github.com/hexacta/didact)
- [Build Yourself a Redux](https://zapier.com/engineering/how-to-build-redux/)
- [Build Your Own Angular JS](https://teropa.info/build-your-own-angular/)

## Web Programming

- [Building a basic HTTP server from scratch in Python](http://joaoventura.net/blog/2017/python-webserver/)


## Unsorted

PRs to organize these resources are very welcome!

- [Handmade Hero](https://handmadehero.org/)
- [Build your own Sinatra](https://getgood.at/build-your-own/sinatra)
- [Destroy All Software's "From Scratch" series](https://www.destroyallsoftware.com/screencasts/catalog)
- [Building an online marketplace from scratch](https://www.voucherify.io/blog/building-an-online-marketplace-from-scratch-introduction)
- [Build a game with Lua and LÖVE](https://github.com/SSYGEN/blog/issues/30)
- [Let's Make a Voxel Engine](https://sites.google.com/site/letsmakeavoxelengine/)

## Other similar lists

- [500 Lines or less](http://aosabook.org/en/index.html) Book with many small tutorials covering a wide range of topics
- [Project Based Learning](https://github.com/tuvtran/project-based-learning)