I'm currently in the process of migrating from a model of "one price for a giant 'course'" to "separate courses for different horses." Doing this requires changing the software a bit to add the concept of courses, which courses a user has purchased, and finally invoices that people need for all the different accounting systems in the world.
Here's the projects list:
01: Parse a CSV File
Getting warmed up by parsing a simple CSV file. A common theme I want in the courses going forward is the idea of "use someone else's code, then make a replica." Consciously copying other software and designs is easily the fastest way to learn how to make that kind of software.
02: Filter a Log File
A classic starter project I always do when I'm learning a new programming language. Despite being simple this project will quickly show if a language is effective because--if you can't parse a file--you probably can't do...anything.
Replicating Unix command line tools is an awesome way to learn more programming techniques, and
ls is a surprisingly deceptive beast to copy. You think, "It just lists a directory" then you try to sort those columns and get the file attributes...
find is an excellent way to learn how files and directory structures work, which is also essential for quite a lot of later web development. It ties into things like static file generating, processing
.md files, and even reading databases.
05: Static Blog Generator
Once you know how to make a
find tool you have all you need to make a simple static blog generator.
06: A First Web Application
Once you can make a static blog you can then step up to
Express.js and make it dynamic. At first this is very easy and mostly just a "turn the static dynamic" operation, but then you want to add blog editing and it turns into a huge project (if you want).
07: Access a SQLite3 Database
knex.js to access a SQLite3 database will get you very far, but I'm going to add an advanced section to this module that shows people how to create an ORM using a very simple one I created on top of
knex.js. As I said before, the best way to learn how an ORM works is to make a simple one.
08: A TODO List Website
You've got a blog, and you've got a database, what better way to combine them than to make a TODO list. Maybe you'll get millions in VC funding! (Please don't).
09: A Full Dynamic Blog
Remember when I said a Blog gets ridiculously complicated? Now you make the blog dynamic by adding in comments, editing, and other features. This could be a long project for you to sink your teeth in and chew until you are bored.
10: A Simple JSON API
The final project is learning how to add a JSON API to your blog for the commenting system. This will be totally pointless for such a small project, but will show you how a JSON API works compared to an HTML generated on the client side.
The plan is up on the curriculum list and I'm now starting to do create the projects. I have to make them first so I know that they are actually doable by a beginner. My general rule is if I can make something in 1-2 hours then a beginner could do it in at least a week. I'll also need the samples done so people can take them to study or copy and change.