About practical-tutorials/project-based-learning
practical-tutorials/project-based-learning is an open-source project on GitHub, mainly written in Python. Curated list of project-based tutorials It currently holds 285,106 stars and 36,444 forks with 255 open issues, and was last pushed on 2026-09-28 (repository created 2017-04-12).
Project Overview
Git Homed tracks it on the Today's Trending board, currently at rank #23 with 215 new stars today.
GitHub Repository Details
README
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
- Tiny Renderer or how OpenGL works: software rendering in 500 lines of code
- Understandable RayTracing in 256 lines of bare C++
- KABOOM! in 180 lines of bare C++
- 486 lines of C++: old-school FPS in a weekend
- Writing a minimal x86-64 JIT compiler in C++
- Part 1
- Part 2
- 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
- Part 1: Integers, Lexing and Code Generation
- Part 2: Unary Operators
- Part 3: Binary Operators
- Part 4: Even More Binary Operators
- Part 5: Local Variables
- Part 6: Conditionals
- Part 7: Compound Statements
- Part 8: Loops
- Part 9: Functions
- Part 10: Global Variables
- Implementing a Language with LLVM
- Meta Crush Saga: a C++17 compile-time game
- High-Performance Matrix Multiplication
- Space Invaders from Scratch
- Part 1
- Part 2
- Part 3
- Part 4
- Part 5
- Tetris Tutorial in C++ Platform Independent
- Writing a Linux Debugger
- Part 1: Setup
- Part 2: Breakpoints
- Part 3: Registers and memory
- Part 4: Elves and dwarves
- Part 5: Source and signals
- Part 6: Source-level stepping
- Part 7: Source-level breakpoints
- Part 8: Stack unwinding
- Part 9: Handling variables
- Part 10: Advanced topics
- Let's write a compiler
- Part 1: Introduction, selecting a language, and doing some planning
- Part 2: A lexer
- Part 3: A parser
- Part 4: Testing
- Part 5: A code generator
- Part 6: Input and output
- Part 7: Arrays
- Part 8: Strings, forward references, and conclusion
Network programming
- Let's Code a TCP/IP Stack
- Part 1: Ethernet & ARP
- Part 2: IPv4 & ICMPv4
- Part 3: TCP Basics & Handshake
- Part 4: TCP Data Flow & Socket API
- Part 5: TCP Retransmission
- Programming concurrent servers
- Part 1 - Introduction
- Part 2 - Threads
- Part 3 - Event-driven
- Part 4 - libuv
- Part 5 - Redis case study
- Part 6 - Callbacks, Promises and async/await
- MQTT Broker from scratch
- Part 1 - The protocol
- Part 2 - Networking
- Part 3 - Server
- Part 4 - Data structures
- Part 5 - Topic abstraction
- Part 6 - Handlers
- Bonus - Multithreading
- Networking from Scratch
OpenGL:
- Creating 2D Breakout game clone in C++ with OpenGL
- Breakout
- Setting up
- Rendering Sprites
- Levels
- Collisions
- Ball
- Collision detection
- Collision resolution
- Particles
- Postprocessing
- Powerups
- Audio
- Render text
- Final thoughts
- 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 a Jupyter Notebook Extension
- 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 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
- Part 1
- Part 2
- Part 3
- Part 4
- Part 5
- Part 6
- Part 7
- React Phone E-Commerce Project(video)
Next.js:
Angular:
- Build an Instagram Clone with Angular 1.x
- Build an offline-capable Hacker News client with Angular 2+
- Part 1
- Part 2
- Build a Google+ clone with Django and AngularJS (Angular 1.x)
- Build A Beautiful Real World App with Angular 8 :
- Part I
- Part II
- Build Responsive layout with BootStrap 4 and Angular 6
- ToDo App with Angular 5
- Introduction to Angular
- Part 1
Node:
- Test-Driven Development with Node, Postgres and Knex
- Write a Twitter Bot in Node.js
- Part 1
- Part 2
- 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
- Part 1
- Part 2
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
- Part 1
- Part 2
- 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)
- Part 1
- Part 2
- Part 3
- Build A Native Desktop App with JS
- Build a Powerful API with NodeJs,GraphQL and Hapi
- Part I
D3.js
Game Development:
- Make 2D Breakout Game using Phaser
- Make Flappy Bird in HTML5 and JavaScript with Phaser
- Part 1
- Part 2
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](https://github.com
GitHub Stars & Activity
285,106Stars
36,444Forks
255Open issues
PythonLanguage
GitHub Popularity
GitHub stars285,106
Forks36,444
Open issues255
Primary languagePython
LicenseMIT
Stars gained today215
Created2017-04-12
Last pushed2026-09-28
Trending History
Daily boardrank #23 · ▲ 215 stars
Related GitHub Projects
1
2
3
4
5
6
7
8