Learn Node.js by building a backend framework - Velocy
You can access the current version of the book in the chapters directory or in PDF format (both Light and Dark modes are available) by clicking here. Note that this version includes the current release of the content, and is not the final version.
This book is still in a very early stage. It contains an insignificant portion of the total content that the book is supposed to cover. There’s going to be 0 dependencies for our backend framework, as well as our logging library. Everything will be done using vanilla Node.js, the hard-way (the best way to learn).
If you're not familiar with javascript, you may also check out my other repository - Learn Javascript - The Easy Way that takes you on a deep and a fun journey into Javascript - from the very basics to the advanced concepts that you'd ever need, without diving into too much theory. Only practical code examples.
To master a new concept, it's often best to begin from the ground up. This isn't just another Node.js guide; it's a comprehensive, code-along experience aimed at building a real world product that may be used by thousands of developers. The product that we're going to build will be a backend framework, that too from scratch.
You won't just learn how Node.js works, but also why it operates in a particular way. The guide also includes discussions on relevant data structures and design patterns.
The book also includes a wide range of exercises specifically created to challenge you, that may require commitment and consistent effort on your part. The first exercises start from chapter 7
This guide goes beyond the basics. We're focused on delivering a modular, optimized backend framework that is close to being production-ready. Topics like performance optimization, security measures, and various testing approaches will be covered to ensure the framework is both reliable and extendable.
I highly recommend actively coding alongside this guide, rather than just reading through it, for a full understanding of Node.js and its more intricate aspects.
The repo for our backend framework- Velocy. (W.I.P)
- (Optional) Node.js is way faster than you think
- What the heck is a web server any way?
- Your first node.jsprogram
- Working with files
- What will the logging library do
- How do you work with files anyway?
- Let’s get back to files
- A little more about file descriptors
- Creating our first file
- pathargument
- flagargument
- modeargument
- Reading from a file
- A small primer on for..ofandfor await..ofin javascript
- Reading the jsonfile
- Buffers
 
- logtarour own logging library- Initializing a new project
- A little about SemVer
- Creating a LogLevelclass
- The Loggerclass
- The LogConfigclass
- Design patterns
- Using builderpattern with theLogConfigclass
- jsdoc comments
- The RollingConfigclass
- Finishing up the RollingConfigclass
- Adding more useful methods in the LogConfigclass
- Refactoring the code
- Writing logs
- 1. Re-using the File Handle
- 2. Log Rotation
- 3. Asynchronous Logging
- 4. Getting Caller Information (Module and Line Number)
- Testing our current API
- Implementing logging methods
- DRY (Don't Repeat Yourself)
- The logmethod
- Considering the log_levelmember variable
- Writing to a file
- Another gotcha
- Logs directory configuration
- The requireobject
- Adding a new helper to create log directory
- Updating the initmethod
- Completing the logmethod
 
- Capturing metadata
- A small intro to asyncvssync
- Adding Rolling File Support
- Stack traces across awaitpoints
 
- HTTP Deep dive
- Velocy- Our backend framework- Why Velocy?
- What is a backend framework/library anyway?
- Core features of our backend framework
- A basic Routerimplementation
- The Routerclass
- thisis not good
- Improving the RouterAPI
- The Need for a Trie
- Ex. Implementing a Trie
- Ex. Implementing our Trie based Router
- Ex. Adding HTTPmethod support
- Adding HTTP methods to the Router
- Ex. Implementing Dynamic Routing
- Running Our Server
- Building our first web-server
- Ex. Query Parameters (Advanced)
 

