Este repositório é uma compilação de guias passo a passo bem escritos para recriar nossas tecnologias favoritas do zero.
O que não consigo criar, não entendo – Richard Feynman.
É uma ótima maneira de aprender.
Renderizador 3D
Realidade Aumentada
Cliente BitTorrent
Blockchain / Criptomoeda
Robô
Ferramenta de linha de comando
Banco de dados
Docker
Emulador / Máquina Virtual
Framework/biblioteca front-end
Jogo
Git
Pilha de rede
Rede Neural
Sistema operacional
Motor de Física
Linguagem de programação
Motor Regex
Mecanismo de pesquisa
Concha
Mecanismo de modelo
Editor de texto
Sistema de reconhecimento visual
Motor Voxel
Navegador da Web
Servidor Web
Sem categoria
3D Renderer
C++ : Introdução ao Ray Tracing: um método simples para criar imagens 3D
C++ : Como funciona o OpenGL: renderização de software em 500 linhas de código
C++ : mecanismo de Raycasting do Wolfenstein 3D
C++ : renderização com base física: da teoria à implementação
C++ : Ray Tracing em um fim de semana
C++ : Rasterização: uma implementação prática
C# / TypeScript / JavaScript : Aprendendo como escrever um soft engine 3D do zero em C#, TypeScript ou JavaScript
Java/JavaScript : Crie seu próprio renderizador 3D
Java : Como criar seu próprio mecanismo de renderização 3D simples em Java puro
JavaScript/Pseudocódigo : Computação Gráfica do zero
Python : um modelador 3D
Augmented Reality
C# : Como fazer: Tutorial de aplicativo de realidade aumentada para iniciantes com Vuforia e Unity 3D [vídeo]
C# : Como Unity ARCore [vídeo]
C# : Tutorial do Portal AR com Unity [vídeo]
C# : Como criar um dragão em realidade aumentada no Unity ARCore [vídeo]
C# : Tutorial de Realidade Aumentada AR: Portal ARKit para o Upside Down [vídeo]
Python : Realidade Aumentada com Python e OpenCV
BitTorrent Client
C# : Construindo um cliente BitTorrent do zero em C#
Go : Construindo um cliente BitTorrent do zero em Go
Nim : Escrevendo um analisador Bencode
Node.js : Escreva seu próprio cliente bittorrent
Python : um cliente BitTorrent em Python 3.5
Blockchain / Cryptocurrency
ATS : Blockchain Funcional
C# : Programando o Blockchain em C#
Crystal : Escreva seu próprio algoritmo blockchain e PoW usando Crystal
Go : Construindo Blockchain em Go
Go : codifique seu próprio blockchain em menos de 200 linhas de Go
Java : Criando seu primeiro Blockchain com Java
JavaScript : uma implementação de criptomoeda em menos de 1.500 linhas de código
JavaScript : Construa seu próprio Blockchain em JavaScript
JavaScript : aprenda e construa um blockchain JavaScript
JavaScript : Criando uma blockchain com JavaScript
JavaScript : como lançar sua própria criptomoeda pronta para produção
JavaScript : Escrevendo um Blockchain em Node.js
Kotlin : vamos implementar uma criptomoeda em Kotlin
Python : Aprenda Blockchains construindo um
Python : Construa seu próprio blockchain: um tutorial de Python
Python : uma introdução prática ao Blockchain com Python
Python : vamos construir o menor blockchain
Ruby : Programando Blockchains passo a passo (edição do livro de manuscritos)
Scala : Como construir um blockchain simples baseado em ator
TypeScript : Naivecoin: um tutorial para construir uma criptomoeda
TypeScript : NaivecoinStake: um tutorial para construir uma criptomoeda com o consenso Proof of Stake
Ferrugem : Construindo um Blockchain em Ferrugem e Substrato
Bot
Haskell : Crie seu próprio bot de IRC
Node.js : Criando um bot simples de IA do Facebook Messenger com API.ai em Node.js
Node.js : como fazer um bot de telegrama responsivo
Node.js : Crie um bot Discord
Node.js : gifbot - Construindo um aplicativo GitHub
Node.js : construindo um chatbot de IA simples com Web Speech API e Node.js
Python : como construir seu primeiro bot do Slack com Python
Python : como construir um Slack Bot com Python usando Slack Events API e Django em menos de 20 minutos
Python : crie um bot do Reddit
Python : como fazer um bot Reddit [vídeo]
Python : como criar um bot de telegrama usando Python
Python : crie um bot do Twitter em Python usando Tweepy
Python : Criando Reddit Bot com Python e PRAW [vídeo]
R : Construa um bot de negociação de criptomoedas com R
Rust : Um bot para Starcraft em Rust, C ou qualquer outra linguagem
Command-Line Tool
Go : visualize suas contribuições git locais com Go
Go : Crie um aplicativo de linha de comando com Go: lolcat
Go : Construindo um comando cli com Go: cowsay
Go : Tutorial Go CLI: clone da fortuna
Nim : Escrevendo uma alternativa stow para gerenciar dotfiles
Node.js : Crie uma ferramenta CLI em Javascript
Rust : aplicativos de linha de comando em Rust
Rust : Escrevendo uma ferramenta de linha de comando em Rust
Database
C : Vamos construir um banco de dados simples
C++ : construa seu próprio Redis do zero
C# : Construa seu próprio banco de dados
Clojure : um banco de dados inspirado na arqueologia
Crystal : Por que você deve construir seu próprio banco de dados NoSQL
Go : Construa seu próprio banco de dados do zero: persistência, indexação, simultaneidade
Vá : Construa seu próprio Redis do zero
JavaScript : Dagoba: um banco de dados gráfico na memória
Python : DBDB: banco de dados de camas de cachorro
Python : escreva seu próprio Redis em miniatura com Python
Ruby : Construa seu próprio armazenamento KV rápido e persistente em Ruby
Rust : construa seu próprio cliente e servidor Redis
Docker
C : contêineres Linux em 500 linhas de código
Go : construa seu próprio contêiner usando menos de 100 linhas de Go
Go : Construindo um contêiner do zero em Go [vídeo]
Python : um workshop sobre contêineres Linux: reconstrua o Docker do zero
Python : uma imitação de prova de conceito do Docker, escrita 100% em Python
Shell : Docker implementado em cerca de 100 linhas de bash
Emulator / Virtual Machine
C : Interpretadores de bytecode desenvolvidos internamente
C : máquina virtual em C
C : Escreva sua própria máquina virtual
C : Escrevendo um emulador de Game Boy, Cinoop
C++ : Como escrever um emulador (interpretador CHIP-8)
C++ : Tutorial de emulação (interpretador CHIP-8)
C++ : Tutorial de emulação (emulador de GameBoy)
C++ : Tutorial de emulação (emulador Master System)
C++ : Emulador NES do zero [vídeo]
Lisp Comum : CHIP-8 em Lisp Comum
JavaScript : emulação de GameBoy em JavaScript
Python : Noções básicas de emulação: escreva seu próprio emulador/intérprete Chip 8
Rust : 0dmg: Aprendendo Rust construindo um emulador parcial de Game Boy
Front-end Framework / Library
JavaScript : WTF é JSX (vamos construir um renderizador JSX)
JavaScript : um guia DIY para construir seu próprio React
JavaScript : Construindo React do zero [vídeo]
JavaScript : Gooact: React em 160 linhas de JavaScript
JavaScript : Aprenda como o pacote React Reconciler funciona construindo seu próprio React DOM leve
JavaScript : construa um Redux para você mesmo
JavaScript : vamos escrever Redux!
JavaScript : Redux: implementando Store from Scratch [vídeo]
JavaScript : crie seu próprio AngularJS simplificado em 200 linhas de JavaScript
JavaScript : faça seu próprio AngularJS
JavaScript : como escrever seu próprio DOM virtual
JavaScript : Construindo um framework frontend, do zero, com componentes (template, state, VDOM)
JavaScript : construa seu próprio React
JavaScript : construindo um renderizador React personalizado [vídeo]
Game
C : Herói Feito à Mão
C : Como programar um jogo NES em C
C : Motor de xadrez em C [vídeo]
C : Vamos fazer: Dangerous Dave [vídeo]
C : Aprenda programação de videogame em C [vídeo]
C : Codificando um solucionador de Sudoku em C [vídeo]
C : Codificando um RPG Rogue/Nethack em C [vídeo]
C : Sobre Tetris e Reimplementação
C++ : ruptura
C++ : Iniciando a programação de jogos v2.0
C++ : Tutorial de Tetris em plataforma C++ independente focado em lógica de jogo para iniciantes
C++ : Refazendo Cavestory em C++ [vídeo]
C++ : reconstruindo a história da caverna [vídeo]
C++ : Invasores do espaço do zero
C# : Aprenda C# construindo um RPG simples
C# : Criando um jogo Roguelike em C#
C# : Construa um RPG C#/WPF
Go : Jogos com Go [vídeo]
Java : Codifique um mecanismo de jogo 2D usando Java - Curso completo para iniciantes [vídeo]
Java : Desenvolvimento de jogos 3D com LWJGL 3
JavaScript : jogo de breakout 2D usando Phaser
JavaScript : como fazer Flappy Bird em HTML5 com Phaser
JavaScript : Desenvolvendo Jogos com React, Redux e SVG
JavaScript : crie seu próprio jogo de sinuca 8-Ball do zero [vídeo]
JavaScript : como fazer seu primeiro Roguelike
JavaScript : pense como um programador: como construir o Snake usando apenas JavaScript, HTML e CSS
Lua : BYTEPATH
Python : desenvolvendo jogos com PyGame
Python : Criando jogos com Python e Pygame [pdf]
Python : Tutorial Roguelike revisado
Ruby : Desenvolvendo jogos com Ruby
Rubi : Cobra Rubi
Rust : Adventures in Rust: um jogo 2D básico
Rust : Tutorial Roguelike em Rust + tcod
Git
Haskell : Reimplementando “git clone” em Haskell de baixo para cima
JavaScript : Gitlet
JavaScript : Construa GIT - Aprenda GIT
Python : cliente Git suficiente para criar um repositório, confirmar e enviar para o GitHub
Python : Escreva um Git para você!
Python : ugit: Aprenda os componentes internos do Git construindo você mesmo o Git
Ruby : Reconstruindo Git em Ruby
Network Stack
C : Guia de Beej para programação de rede
C : Vamos codificar uma pilha TCP/IP
C/Python : Construa seu próprio VPN/Switch Virtual
Ruby : Como construir uma pilha de rede em Ruby
Neural Network
C# : OCR de rede neural
F# : Construindo Redes Neurais em F#
Go : Construa um perceptron multicamadas com Golang
Go : como construir uma rede neural artificial simples com Go
Go : Construindo uma rede neural do zero em Go
JavaScript / Java : Redes Neurais - A Natureza do Código [vídeo]
JavaScript : redes neurais do zero para linguistas JavaScript (Parte 1 — O Perceptron)
Python : uma rede neural em 11 linhas de Python
Python : implemente uma rede neural do zero
Python : reconhecimento óptico de caracteres (OCR)
Python : Classificação de sinais de trânsito com uma rede convolucional
Python : gere música usando rede neural LSTM em Keras
Python : uma introdução às redes neurais convolucionais
Python : Redes Neurais: Zero a Herói
Operating System
Assembly : Escrevendo um Bootloader Tiny x86
Montagem : Baking Pi – Desenvolvimento de Sistemas Operacionais
C : Construindo uma pilha de software e hardware para um computador simples do zero [vídeo]
C : Sistemas Operacionais: De 0 a 1
C : O livrinho sobre desenvolvimento de sistema operacional
C : Crie seu próprio sistema operacional clone do UNIX de brinquedo
C : Kernel 101 – Vamos escrever um Kernel
C : Kernel 201 – Vamos escrever um Kernel com suporte para teclado e tela
C : Construa um kernel multitarefa mínimo para ARM do zero
C : Como criar um sistema operacional do zero
C : Tutorial Malloc
C : Hackear a memória virtual
C : Aprendendo o desenvolvimento de sistemas operacionais usando kernel Linux e Raspberry Pi
C : Desenvolvimento de sistemas operacionais para leigos
C++ : Escreva seu próprio sistema operacional [vídeo]
C++ : Escrevendo um Bootloader
Rust : Escrevendo um sistema operacional em Rust
Rust : Adicionar tutorial do sistema operacional Rust RISC-V
(qualquer) : Linux do zero
Physics Engine
C : Tutorial de física de videogame
C++ : série de física de jogos de Allen Chou
C++ : Como criar um mecanismo de física personalizado
C++ : Tutorial do mecanismo de física 3D [vídeo]
JavaScript : como funcionam os motores de física
JavaScript : detecção de colisão de fase ampla usando particionamento espacial
JavaScript : crie um mecanismo de física 2D simples para jogos JavaScript
Programming Language
(qualquer) : mal - Faça um Lisp
Montagem : Jonesforth
C : O primeiro coletor de lixo do bebê
C : Construa seu próprio Lisp: Aprenda C e construa sua própria linguagem de programação em 1000 linhas de código
C : Escrevendo um coletor de lixo simples em C
C : intérprete C que interpreta a si mesmo.
C : versão AC e x86 de "Let's Build a Compiler" de Jack Crenshaw
C : Uma jornada explicando como construir um compilador do zero
C++ : Escrevendo seu próprio compilador de brinquedo usando Flex
C++ : Como criar um compilador [vídeo]
C++ : Caleidoscópio: Implementando uma Linguagem com LLVM
F# : Noções básicas sobre combinadores de analisador
Elixir : Desmistificando compiladores escrevendo seus próprios [vídeo]
Go : o compilador super minúsculo
Go : verificação lexical em Go [vídeo]
Haskell : Vamos construir um compilador
Haskell : Escreva um Haskell para você
Haskell : Escreva um esquema para você mesmo em 48 horas
Haskell : Escreva um esquema para você
Java : Criando intérpretes: um manual para criar linguagens de programação
Java : Criando Linguagem JVM
JavaScript : o compilador super minúsculo
JavaScript : o intérprete superminúsculo
JavaScript : interpretador Little Lisp
JavaScript : Como implementar uma linguagem de programação em JavaScript
JavaScript : vamos escrever um Lisp
OCaml : Escrevendo um compilador C
OCaml : Escrevendo um Lisp, a série
Pascal : Vamos construir um compilador
Python : um intérprete Python escrito em Python
Python : lisp.py: Faça seu próprio interpretador Lisp
Python : como escrever um interpretador Lisp em Python
Python : vamos construir um interpretador simples
Python : crie sua própria linguagem de programação simples e interpretada [vídeo]
Python : do código-fonte ao código de máquina: construa seu próprio compilador do zero
Racket : Beautiful Racket: Como criar suas próprias linguagens de programação com Racket
Ruby : um compilador do zero
Ruby : compilador Markdown do zero em Ruby
Rust : Então você deseja construir uma VM de linguagem
Rust : Aprendendo Combinadores de Analisador com Rust
Swift : Construindo um LISP do zero com Swift
TypeScript : construa seu próprio compilador WebAssembly
Regex Engine
C : Uma correspondência de expressão regular
C : A correspondência de expressões regulares pode ser simples e rápida
Go : Como construir um mecanismo regex do zero
JavaScript : construa um mecanismo Regex em menos de 40 linhas de código
JavaScript : Como implementar expressões regulares em javascript funcional usando derivadas
JavaScript : implementando um mecanismo de expressão regular
Perl : como funcionam os regexes
Python : construa seus próprios mecanismos de expressão regular: Backtracking, NFA, DFA
Scala : Sem mágica: expressões regulares
Search Engine
CSS : um mecanismo de pesquisa em CSS
Python : Construindo um mecanismo de pesquisa usando Redis e redis-py
Python : Construindo um mecanismo de indexação de espaço vetorial em Python
Python : construindo um mecanismo de pesquisa baseado em Python [vídeo]
Python : fazendo com que a pesquisa de texto aprenda com o feedback
Python : Encontrando palavras importantes no texto usando TF-IDF
Shell
C : Tutorial - Escreva um Shell em C
C : Vamos construir uma concha!
C : Escrevendo um shell UNIX
C : Construa seu próprio shell
C : Escreva um shell em C
Go : Escrevendo um shell simples em Go
Rust : construa seu próprio shell usando Rust
Template Engine
JavaScript : mecanismo de modelo JavaScript em apenas 20 linhas
JavaScript : Compreendendo a micromodelação JavaScript
Python : Abordagem: Construindo um mecanismo de modelo de brinquedo em Python
Python : um mecanismo de modelo
Ruby : Como escrever um mecanismo de modelo em menos de 30 linhas de código
Text Editor
C : Construa seu próprio editor de texto
C++ : Projetando um Editor de Texto Simples
Python : Tutorial Python: Faça seu próprio editor de texto [vídeo]
Python : Crie um editor de texto simples em Python!
Ruby : Construa um Editor de Texto Colaborativo Usando Rails
Rust : Hecto: Construa seu próprio editor de texto em Rust
Visual Recognition System
Python : desenvolvendo um sistema de reconhecimento de placas de veículos com aprendizado de máquina em Python
Python : construindo um pipeline de reconhecimento facial com aprendizado profundo no Tensorflow
Voxel Engine
C++ : vamos fazer um motor Voxel
Java : Tutorial do mecanismo Java Voxel [vídeo]
Web Browser
Rust : vamos construir um mecanismo de navegador
Python : engenharia de navegador
Web Server
C# : Escrevendo um servidor Web do zero
Node.js : construa seu próprio servidor Web do zero em JavaScript
Node.js : vamos codificar um servidor web do zero com NodeJS Streams
Node.js : vamos construir-expresso
PHP : Escrevendo um servidor web em PHP puro
Python : um servidor web simples
Python : vamos construir um servidor web.
Python : aplicativo da Web do zero
Python : Construindo um servidor HTTP básico do zero em Python
Python : Implementando uma API Web RESTful com Python e Flask
Ruby : Construindo um servidor websockets simples do zero em Ruby
(qualquer) : De NAND a Tetris: construindo um computador moderno a partir dos primeiros princípios
Alloy : a política de mesma origem
C : Como escrever um player de vídeo em menos de 1.000 linhas
C : Aprenda como escrever uma tabela hash em C
C : O básico de um emulador de terminal
C : Escreva uma chamada de sistema
C : Sol – Um corretor MQTT do zero
C++ : construa seu próprio headset VR por US$ 200
C++ : Como funcionam os gerenciadores de janelas X e como escrever um
C++ : Escrevendo um depurador Linux
C++ : Como é feita uma introdução de 64k
C++ : Faça seu próprio mecanismo de jogo
C# : Rede C#: Crie um servidor de bate-papo TCP, jogos TCP, UDP Pong e muito mais
C# : Carregando e renderizando animações esqueléticas 3D do zero em C# e GLSL
Clojure : Construindo um corretor ortográfico
Go : Construa um emulador de terminal simples em 100 linhas de Golang
Vá : Vamos criar um balanceador de carga simples
Vá : codificação de vídeo do zero
Java : como construir um aplicativo Reddit para Android [vídeo]
JavaScript : Construa seu próprio empacotador de módulos - Minipack
JavaScript : Aprenda promessas de JavaScript construindo uma promessa do zero
JavaScript : Implementando promessas do zero (modo TDD)
JavaScript : implemente seu próprio método - call(), apply() e bind() em JavaScript
JavaScript : algoritmos JavaScript e estruturas de dados
JavaScript : crie um aplicativo de carona com React Native
JavaScript : crie seu próprio AdBlocker em (literalmente) 10 minutos
Kotlin : crie seu próprio cache
Lua : Construindo um CDN do zero para aprender sobre CDN
Nim : Escrevendo um analisador de protocolo Redis
Nim : Escrevendo um sistema Build
Nim : Escrevendo uma estrutura de MiniTest
Nim : Escrevendo um analisador DMIDecode
Nim : Escrevendo um analisador INI
Nim : Escrevendo um verificador de link
Nim : Escrevendo um serviço de encurtamento de URL
Node.js : Construa um gerador de site estático em 40 linhas com Node.js
Node.js : construindo um servidor simples de login único (SSO) e uma solução do zero em Node.js.
Node.js : como criar um aplicativo Node CLI do mundo real com Node
Node.js : Construa um servidor DNS em Node.js
PHP : Escreva seu próprio MVC do zero em PHP
PHP : Faça seu próprio blog
PHP : PHP moderno sem framework
PHP : Codifique um mecanismo de pesquisa na Web em PHP
Python : construa uma biblioteca de aprendizado profundo [vídeo]
Python : como construir um scanner de documentos móvel incrível em apenas 5 minutos
Python : Sistema de Integração Contínua
Python : sistemas de recomendação em Python: tutorial para iniciantes
Python : escreva detector de spam de SMS com Scikit-learn
Python : um mecanismo de recomendação simples baseado em conteúdo em Python
Python : previsões do mercado de ações com LSTM em Python
Python : Construindo uma Rede Adversarial Generativa (GAN) simples usando Tensorflow
Python : aprenda algoritmos de ML codificando: árvores de decisão
Python : algoritmo de decodificação JSON
Python : crie seu próprio plugin Git com python
Ruby : um pedômetro no mundo real
Ruby : Criando um aplicativo Linux Desktop com Ruby
Rust : Construindo um servidor DNS em Rust
Rust : escrevendo um serviço de bate-papo escalonável do zero
Rust : WebGL + Rust: Tutorial Básico de Água
TypeScript : Tiny Package Manager: aprende como funciona o npm ou o Yarn
Inscrições são bem-vindas, basta enviar um PR ou criar um problema
Ajude-nos a revisar os envios pendentes deixando comentários e "reações"
Este repositório é o trabalho de muitos contribuidores. Foi iniciado por Daniel Stefanovic e agora é mantido pela CodeCrafters, Inc. Na medida do possível por lei, a CodeCrafters, Inc. renunciou a todos os direitos autorais e direitos relacionados ou conexos a este trabalho.