project-based-learning
Project-based learning tutorials — a curated awesome-list of programming tutorials to build applications from scratch
This awesome-list compiles programming tutorials that guide aspiring software developers through building complete applications from scratch. Tutorials are categorized by primary programming language, covering diverse technologies and project types from interpreters to games. It serves as a valuable resource for hands-on learning across many popular languages and frameworks.
- Tutorials categorized by 20+ programming languages
- Guides for building interpreters, operating systems, and games
- Covers web development, network programming, and graphics
- Curated links to external, in-depth project tutorials
README
View on GitHub ↗Project Based Learning
A list of programming tutorials in which aspiring software developers learn how to build an application from scratch. These tutorials are divided into different primary programming languages. Tutorials may involve multiple technologies and languages.
To get started, simply fork this repo. Please refer to CONTRIBUTING.md for contribution guidelines.
Table of Contents:
- C#
- C/C++
- Clojure
- Dart
- Elixir
- Erlang
- F#
- Go
- Haskell
- HTML/CSS
- Java
- JavaScript
- Kotlin
- Lua
- OCaml
- PHP
- Python
- R
- Ruby
- Rust
- Scala
- Swift
- Additional resources
C/C++:
- Build an Interpreter (Chapter 14 on is written in C)
- Memory Allocators 101 - Write a simple memory allocator
- Write a Shell in C
- Write a FUSE Filesystem
- Build Your Own Text Editor
- Build Your Own Lisp
- How to Program an NES Game in C
- Write an OS from scratch
- How to create an OS from scratch
- Building a CHIP-8 Emulator
- Beginning Game Programming with C++ and SDL
- Implementing a Key-Value Store
- Tiny 3D graphics projects
- Writing a minimal x86-64 JIT compiler in C++
- Build a Live Code-reloader Library for C++
- Write a hash table in C
- Let's Build a Simple Database
- Let's Write a Kernel
- Write a Bootloader in C
- Linux Container in 500 Lines of Code
- Write Your Own Virtual Machine
- Learning KVM - Implement Your Own Linux Kernel
- Build Your Own Redis with C/C++
- Write a C compiler
- Implementing a Language with LLVM
- Meta Crush Saga: a C++17 compile-time game
- High-Performance Matrix Multiplication
- Space Invaders from Scratch
- Tetris Tutorial in C++ Platform Independent
- Writing a Linux Debugger
- Let's write a compiler
Network programming
Let's Code a TCP/IP Stack
Programming concurrent servers
MQTT Broker from scratch
OpenGL:
- Creating 2D Breakout game clone in C++ with OpenGL
- Handmade Hero
- How to Make Minecraft in C++/OpenGL (video)
C#:
- Learn C# By Building a Simple RPG Game
- Create a Rogue-like game in C#
- Create a Blank App with C# and Xamarin (work in progress)
- Build iOS Photo Library App with Xamarin and Visual Studio
- Building the CoreWiki This is a Wiki-style content management system that has been completely written in C# with ASP.NET Core and Razor Pages. You can find the source code here.
Clojure:
- Build a Twitter Bot with Clojure
- Building a Spell-Checker
- Building a JIRA integration with Clojure & Atlassian Connect
- Prototyping with Clojure
- Tetris in ClojureScript
Dart:
Flutter:
- Amazon Clone with Admin Panel
- Food Delivery App
- Google Docs Clone
- Instagram Clone
- Multiplayer TicTacToe Game
- TikTok Clone
- Ticket Booking App
- Travel App
- Twitch Clone
- WhatsApp Clone
- Wordle Clone
- Zoom Clone
- Netflix Clone
Elixir
- Building a Simple Chat App With Elixir and Phoenix
- How to write a super fast link shortener with Elixir, Phoenix, and Mnesia
Erlang
- ChatBus : build your first multi-user chat room app with Erlang/OTP
- Making a Chat App with Erlang, Rebar, Cowboy and Bullet
F#:
Java:
- Build an Interpreter (Chapter 4-13 is written in Java)
- Build a Simple HTTP Server with Java
- Build an Android Flashlight App (video)
- Build a Spring Boot App with User Authentication
JavaScript:
- Build 30 things in 30 days with 30 tutorials
- Build an App in Pure JS
- Build a Jupyter Notebook Extension
- Build a TicTacToe Game with JavaScript
- Build a Simple Weather App With Vanilla JavaScript
- Build a Todo List App in JavaScript
HTML and CSS:
- Build A Loading Screen
- Build an HTML Calculator with JS
- Build Snake using only JavaScript, HTML & CSS
Mobile Application:
Web Applications:
React:
- Create Serverless React.js Apps
- Create a Trello Clone
- Create a Character Voting App with React, Node, MongoDB and SocketIO
- React Tutorial: Cloning Yelp
- Build a Full Stack Movie Voting App with Test-First Development using Mocha, React, Redux and Immutable
- Build a Twitter Stream with React and Node
- Build A Simple Medium Clone using React.js and Node.js
- Integrate MailChimp in JS
- Build A Chrome Extension with React + Parcel
- Build A ToDo App With React Native
- Make a Chat Application
- Create a News App with React Native
- Learn Webpack For React
- Testing React App With Puppeteer and Jest
- Build Your Own React Boilerplate
- Code The Game Of Life With React
- A Basic React+Redux Introductory Tutorial
- Build an Appointment Scheduler
- Build A Chat App with Sentiment Analysis
- Build A Full Stack Web Application Setup
- Create Todoist clone with React and Firebase
- Build A Random Quote Machine
- React Phone E-Commerce Project(video)
Angular:
Build an offline-capable Hacker News client with Angular 2+
Build a Google+ clone with Django and AngularJS (Angular 1.x)
Build A Beautiful Real World App with Angular 8 :
ToDo App with Angular 5
Node:
- Build a real-time Markdown Editor with NodeJS
- Test-Driven Development with Node, Postgres and Knex
- Write a Twitter Bot in Node.js
- Build A Simple Search Bot in 30 minutes
- Build A Job Scraping Web App
- Building a GitHub App
- How to build your own Uber-for-X App using JavaScript, Node.JS, MongoDB and Web Sockets
Vue
- Vue 2 + Firebase: How to build a Vue app with Firebase authentication system in 15 minutes
- Vue.js Application Tutorial – Creating a Simple Budgeting App with Vue
- Build a Blog with Vue, GraphQL and Apollo
- Build a full stack web application using MEVN (MongoDB, Express, Vue, Node) stack
- Vue.js To-Do List Tutorial (video)
- Vue 2 + Pub/Sub: Build a peer to peer multi-user platform for games
Others (Hapi, Express...):
- Build a Progressive Web Application (PWA)
- Build A Native Desktop App with JS
- Build a Powerful API with NodeJs,GraphQL and Hapi
D3.js
Game Development:
- Make 2D Breakout Game using Phaser
- Make Flappy Bird in HTML5 and JavaScript with Phaser
Desktop Application:
Miscellaneous:
- How to Build a Web Framework in Less Than 20 Lines of Code
- Build Yourself a Redux
- How to write your own Virtual DOM
- Build A Realtime Serverless GraphQL API with WebSockets on AWS
Kotlin:
Lua:
LÖVE:
- BYTEPATH: Creation of a Complete Game with Lua and LÖVE
- Part 0: Introduction
- Part 1: Game Loop
- Part 2: Libraries
- Part 3: Rooms and Areas
- Part 4: Exercises
- Part 5: Game Basics
- Part 6: Player Basics
- Part 7: Player Stats and Attacks
- Part 8: Enemies
- Part 9: Director and Gameplay Loop
- Part 10: Coding Practices
- Part 11: Passives
- Part 12: More Passives
- Part 13: Skill Tree
- Part 14: Console
- Part 15: Final
Python:
Web Scraping:
- Mining Twitter Data with Python
- Scrape a Website with Scrapy and MongoDB
- How To Scrape With Python and Selenium WebDriver
- Which Movie Should I Watch using BeautifulSoup
Web Applications:
- Build a Microblog with Flask
- Create a Blog Web App In Django
- Choose Your Own Adventure Presentations
- Build a Todo List with Flask and RethinkDB
- Build a Todo List with Django and Test-Driven Development
- Build a RESTful Microservice in Python
- Microservices with Docker, Flask, and React
- Build A Simple Web App With Flask
- Create A Django API in under 20 minutes
- Build a Community-driven delivery application with Django, Postgres and JavaScript
- Realtime Chat application with Vue, django-notifs, RabbitMQ and uWSGI
Bots:
- Build a Reddit Bot
- How to Make a Reddit Bot - YouTube (video)
- Build a Facebook Messenger Bot
- Making a Reddit + Facebook Messenger Bot
- How To Create a Telegram Bot Using Python
- Create a Twitter Bot In Python
Data Science:
- Learn Python For Data Science by Doing Several Projects (video):
Machine Learning:
- Write Linear Regression From Scratch in Python (video)
- Step-By-Step Machine Learning In Python
- Predict Quality Of Wine
- Solving A Fruits Classification Problem
- Learn Unsupervised Learning with Python
- Build Your Own Neural Net from Scratch in Python
- Linear Regression in Python without sklearn
- Multivariate Linear Regression without sklearn
- Music Recommender using KNN
- Find Similar Quora Questions-
- [Using BOW, TFIDF and Xgboost](https://towardsdatascience.com/finding-similar-quora-questions-with-bow-tfidf-and-random-forest-c54a
Similar awesome lists
build-your-own-x
Awesome-list of step-by-step guides to build your own tech from scratch
public-apis
Awesome list of public APIs — manually curated directory of free APIs across diverse domains
developer-roadmap
Developer career awesome-list — interactive roadmaps and guides for various tech stacks, including Claude Code
system-design-primer
System design awesome-list — learn to build large-scale systems and ace technical interviews