App From Scratch (Paused)
In 2018 I took an attempt to build an open course on how to create applications from scratch. The goal was to talk about every components in a non-trivial application (in this particular case it was going to be a Content Management System) and basically document how it was put together.
This was put on hiatus due to lack of traffic, as well as work commitments. The main posts are captured here for archival purpose.
App From Scratch Modules
App From Scratch differs from other “learning to code” programs in the following ways:
- We learn top down, meaning that each one of our learnings is triggered by a goal that we are trying to accomplish, i.e. we start with the application.
- We learn just in time, meaning that we’ll research and discover the bits and pieces of knowledge as we need them, rather than building up knowledge without trying to apply them.
- However, we will also go beyond just trying to find the bits and pieces and really try to understand the knowledge at a fundamental level, i.e. we will not just rush through things without explanations.
- Finally, the majority of the code written in the course will be production code. For example, this website is being built with the code written in the modules.
As this is a new program, we are in the process of developing the modules, and will update and release them as we have them. Signup for notifications to when the modules become available, as well as gaining access to the premium modules.
Meta Level (How to build an app)
- Module Zero – let’s get the party started.
- Module Project – how to plan and manage your software project, the meta stuff.
Top Level (the apps)
Module Core – Foundation of Building Your Web App (upcoming)
In this module, we will show what does it take to build a web application in Node.js, which is the basics of what powers this website. We will make it into a git-based content management system for managing the course contents.
- Session 1 – Hello World in Node.js
- Session 2 – Extending Routing
- Session 3 – Serve Static and Dynamic Files
- Session 4 – Converting to TypeScript
- Session 5 – Creating the Landing Page Part 1
- Session 6 – Tame the Node.js Callback Hell with Promises
- Session 7 – Creating the Landing Page Part 2 – Including Content Snippets
- Session 8 – Creating the Landing Page Part 3 – Custom Template Engine with Include Directive
- Session 9 – Creating the Landing Page Part 4 – Enable Template Refreshes and Break Template Circular References
Module Forum (upcoming)
In this module, we will enhance the base CMS with forum capabilities so everyone can talk to each other and collaborate.
Module Chat (upcoming)
In this module, we will enhance the base Forum with real-time chat capabilities so people can gain real-time responses
Component Level (the foundation and services)
Module Users (upcoming)
In this module, we will learn how to convert our app into a multi-user system, including handling authentication, authorization, personalization, etc.
Module eCommerce (upcoming)
In this module, we will learn how to enable commercial transactions for selling goods and services through your web app, as well as dealing with subscription-based purchases.
Module Forms (upcoming)
In this module, we will try to build a powerful form system that can be user-configured.
Supplemental modules are modules that focus on teaching a specific concept (i.e. they supplement the main modules). They will be added on as needed basis demonstrated by the participants.