# Project Based Learning A list of programming tutorials in which learners build an application from scratch. These tutorials are divided into different primary programming languages. Some have intermix technologies and languages. To get started, simply fork this repo. Please refer to [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines. ## Table of Contents: * [C/C++](#cc) * [C#](#c) * [Clojure](#clojure) * [Java](#java) * [JavaScript](#javascript) * [Python](#python) * [Go](#go) * [Ruby](#ruby) * [Haskell](#haskell) * [PHP](#php) * [R](#r) * [Rust](#rust) * [Additional resources](#additional-resources) ## C/C++: * [Write a Shell in C](https://brennan.io/2015/01/16/write-a-shell-in-c/) * [Build Your Own Text Editor](http://viewsourcecode.org/snaptoken/kilo/) * [Build Your Own Lisp](http://www.buildyourownlisp.com/) * [Write an OS from scratch](https://github.com/tuhdo/os01) * [How to Make Minecraft in C++/OpenGL](https://www.youtube.com/playlist?list=PLMZ_9w2XRxiZq1vfw1lrpCMRDufe2MKV_) * [How to Write an Emulator (CHIP-8 interpreter)](http://www.multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter/) ## C#: * [Learn C# By Building a Simple RPG Game](http://scottlilly.com/learn-c-by-building-a-simple-rpg-index/) * [Create a Rogue-like game in C#](https://roguesharp.wordpress.com/) * [Create a Blank App with C# and Xamarin (work in progress)](https://www.intertech.com/Blog/xamarin-tutorial-part-1-create-a-blank-app/) * [Build iOS Photo Library App with Xamarin and Visual Studio](https://www.raywenderlich.com/134049/building-ios-apps-with-xamarin-and-visual-studio) ## Clojure: * [Build a Twitter Bot with Clojure](http://howistart.org/posts/clojure/1/index.html) ## Java: * [Build a Simple HTTP Server with Java](http://javarevisited.blogspot.com/2015/06/how-to-create-http-server-in-java-serversocket-example.html) * [Build an Android Flashlight App](https://www.youtube.com/watch?v=dhWL4DC7Krs) * [Build a Spring Boot App with User Authentication](https://scotch.io/tutorials/build-a-spring-boot-app-with-user-authentication) ## JavaScript: * [Build 30 things in 30 days with 30 tutorials](https://javascript30.com) ### Mobile Application: * [Build a React Native Todo Application](https://egghead.io/courses/build-a-react-native-todo-application) ### Web Applications: #### React: * [Create Serverless React.js Apps](http://serverless-stack.com/) * [Create a Trello Clone](http://codeloveandboards.com/blog/2016/01/04/trello-tribute-with-phoenix-and-react-pt-1/) * [Create a Character Voting App with React, Node, MongoDB and SocketIO](http://sahatyalkabov.com/create-a-character-voting-app-using-react-nodejs-mongodb-and-socketio/) * [Build a Full Stack Movie Voting App with Test-First Development using Mocha, React, Redux and Immutable](https://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html) * Build a Serverless MERN Story App with Webtask.io * [Part 1](https://scotch.io/tutorials/build-a-serverless-mern-story-app-with-webtask-io-zero-to-deploy-1) * [Part 2](https://scotch.io/tutorials/build-a-serverless-mern-story-app-with-webtask-io-zero-to-deploy-2) #### Angular: * [Build an Instagram Clone](https://hackhands.com/building-instagram-clone-angularjs-satellizer-nodejs-mongodb/) * Build an offline-capable Hacker News client with Angular 2+ * [Part 1](https://houssein.me/angular2-hacker-news) * [Part 2](https://houssein.me/progressive-angular-applications) #### Others (Node, Hapi, Express...): * [Build a URL Shortener with Node, MongoDB and Hapi.js](https://www.codetuts.tech/build-a-url-shortener-node-hapi-js/?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more) * [Build a real-time Markdown Editor with NodeJS](https://scotch.io/tutorials/building-a-real-time-markdown-viewer) * Build a Progressive Web Application (PWA) * [Part 1](https://bitsofco.de/bitsofcode-pwa-part-1-offline-first-with-service-worker/) * [Part 2](https://bitsofco.de/bitsofcode-pwa-part-2-instant-loading-with-indexeddb/) * [Part 3](https://bitsofco.de/bitsofcode-pwa-part-3-push-notifications/) ### Game Development: * [Make 2D Breakout Game using Phaser](https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser) * Make Flappy Bird in HTML5 and JavaScript with Phaser * [Part 1](http://www.lessmilk.com/tutorial/flappy-bird-phaser-1) * [Part 2](http://www.lessmilk.com/tutorial/flappy-bird-phaser-2) ### Desktop Application: * Build a Music Player with React & Electron * [Part 1](https://scotch.io/tutorials/build-a-music-player-with-react-electron-i-setup-basic-concepts) * [Part 2](https://scotch.io/tutorials/build-a-music-player-with-react-electron-ii-making-the-ui) * [Part 3](https://scotch.io/tutorials/build-a-music-player-with-react-electron-iii-container-component) ### Miscellaneous: * [How to Build a Web Framework in Less Than 20 Lines of Code](https://www.pubnub.com/blog/build-yourself-a-web-framework-in-less-than-20-lines-of-code/) * [Build Yourself a Redux](https://zapier.com/engineering/how-to-build-redux/) ## Python: ### Web Scraping: * [Mining Twitter Data with Python](https://marcobonzanini.com/2015/03/02/mining-twitter-data-with-python-part-1/) * [Scrape a Website with Scrapy and MongoDB](https://realpython.com/blog/python/web-scraping-with-scrapy-and-mongodb/) ### Web Applications: * [Build a Microblog with Flask](https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world) * [Create a blog webapp in Django](https://tutorial.djangogirls.org/en/) * [Choose Your Own Adventure Presentations](https://www.twilio.com/blog/2015/03/choose-your-own-adventures-presentations-wizard-mode-part-1-of-3.html) * [Build a Todo List with Flask and RethinkDB](https://realpython.com/blog/python/rethink-flask-a-simple-todo-list-powered-by-flask-and-rethinkdb/) ### Bots: * [Build a Reddit Bot](http://pythonforengineers.com/build-a-reddit-bot-part-1/) * [How to Make a Reddit Bot - YouTube](https://www.youtube.com/watch?v=krTUf7BpTc0) * [Build a Facebook Messenger Bot](https://blog.hartleybrody.com/fb-messenger-bot/) * [Making a Reddit + Facebook Messenger Bot](https://pythontips.com/2017/04/13/making-a-reddit-facebook-messenger-bot/) * [How To Create a Telegram Bot Using Python](https://khashtamov.com/en/how-to-create-a-telegram-bot-using-python/) ### Miscellaneous: * [Build a Simple Interpreter](https://ruslanspivak.com/lsbasi-part1/) * [Write a NoSQL Database in Python](https://jeffknupp.com/blog/2014/09/01/what-is-a-nosql-database-learn-by-writing-one-in-python/) * [Building a Gas Pump Scanner with OpenCV/Python/iOS](https://hackernoon.com/building-a-gas-pump-scanner-with-opencv-python-ios-116fe6c9ae8b) ## Go: * [Create a Real Time Chat App with Golang, Angular 2, and WebSocket](https://www.thepolyglotdeveloper.com/2016/12/create-real-time-chat-app-golang-angular-2-websockets/) * [Building Go Web Applications and Microservices Using Gin](https://semaphoreci.com/community/tutorials/building-go-web-applications-and-microservices-using-gin) * [How to Use Godog for Behavior-driven Development in Go et started with Godog](https://semaphoreci.com/community/tutorials/how-to-use-godog-for-behavior-driven-development-in-go) ## PHP: * [How To Build A Blog With Laravel](https://www.youtube.com/playlist?list=PLwAKR305CRO-Q90J---jXVzbOd4CDRbVx) * [Make Your Own Blog (in Pure PHP)](http://ilovephp.jondh.me.uk/en/tutorial/make-your-own-blog) * [Build A Real Estate Website Example with SilverStripe](https://www.silverstripe.org/learn/lessons/) ## Ruby: * [Build Instagram From Scratch with Ruby on Rails](https://www.dropbox.com/s/9vq430e9s3q7pu8/Let%27s%20Build%20Instagram%20with%20Ruby%20on%20Rails%20-%20Free%20Edition.pdf?dl=0) * [Build a CMS with Ruby on Rails](https://pchm.co/posts/tutorial-how-to-build-a-cms-in-ruby-on-rails) * [Build a Social Network using Rails](https://medium.com/rails-ember-beyond/how-to-build-a-social-network-using-rails-eb31da569233) ## Haskell: * [Write You a Haskell - Build a modern functional compiler](http://dev.stephendiehl.com/fun/) * [Write Yourself a Scheme in 48 hours](https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours) * [Write You A Scheme, Version 2](https://github.com/write-you-a-scheme-v2/scheme) * [Roll Your Own IRC Bot](https://wiki.haskell.org/Roll_your_own_IRC_bot) * [Making Movie Monad](https://lettier.github.io/posts/2016-08-15-making-movie-monad.html) * [Making a Website with Haskell **(outdated)**](http://adit.io/posts/2013-04-15-making-a-website-with-haskell.html) ## R: * [Build Web Apps with Shiny](http://shiny.rstudio.com/tutorial/) ## Rust: * A Simple Web App in Rust * [Part 1](http://joelmccracken.github.io/entries/a-simple-web-app-in-rust-pt-1/) * [Part 2a](http://joelmccracken.github.io/entries/a-simple-web-app-in-rust-pt-2a/) * [Part 2b](http://joelmccracken.github.io/entries/a-simple-web-app-in-rust-pt-2b/) * [Write an OS in Rust](http://os.phil-opp.com/) ## Additional Resources * [React Redux Links](https://github.com/markerikson/react-redux-links) * [Full Stack Python](https://www.fullstackpython.com/) * [Node School](https://nodeschool.io/) * [ScotchIO](https://scotch.io/) * [Exercism](http://www.exercism.io/) * [Egghead.io](http://www.egghead.io/)