The Universal Guide to Building REST APIs with node

Tao of Node contains proven rules and guidelines to build better applications. You will learn more about architecture, design, tooling, testing and performance.

Contains 125 rules, grouped in 6 chapters, totalling 190 pages.

Node.js & Express beyond the basics.

Where to go after I've taken a Node.js course?

This is the question every beginner has once they learn the basics. You know how to build an application and understand how the tools work. But once you start working on your first project, questions pop up. How do I structure it? Where do I put my business logic? How do I make it more reusable? What libraries should I use? What about the database?

There are many resources that can teach you the little pieces. No one tells you how to put them together to build real software. Most applications need to be extended, modified and supported. To work productively you need more than surface-level knowledge of Node.

Let me help you out. Through trial and error I've formulated a set of principles that I follow when building Node applications. I've learned them the hard way but you don't have to.

For beginners and intermediate developers.

Tao of Node is made for beginners who want to learn about building real-world applications and intermediate developers who want to advance in their careers. The best time to read it is when you've grasped the fundamentals and are starting to build real applications.

This book will not teach you Node.js from scratch. It builds on top of the core concepts and helps you form the right principles. So what knowledge do you need? Basic understanding of a router like Express, experience with any kind of database and one personal project to practice with.

If you've built an application following a tutorial and you're wondering how to structure it - this is for you. If you're unsure what's the best way to deploy it - this is for you. If you're not sure what you should focus on to make your code cleaner - this is for you.

Tao of Node will help you go to from beginner to intermediate by helping you understand the core principles of software design.

Chapters

Each chapter contains a set of simple rules that will help you build great software. You don't have to read them in a particular order. Dive in and learn what's most interesting to you.

Architecture

High level concepts and decisions that make a codebase modular and extensible - structure, abstractions and business logic.

Tooling

The technologies and libraries to focus on for your next project - frameworks, databases, supporting tools, logging and monitoring.

Testing

Development is never final. We'll learn principles about testing that will help us maintain quality and stability as our application grows and changes.

Performance

It doesn't matter how good your product is if it's slow. We'll explore core performance principles to keep in mind.

Serverless & GraphQL

Two technologies with great Node.js support that any engineer should understand. We will go over the best practices for each one.

Scenarios

A collection of common problems that you can face in your work. From extracting a microservice to how to apply these patterns to existing projects.

Principles

Each rule is a concise, self-contained principle that teaches you how to build better React applications. They are straight to the point without unnecessary explanations and noise. Reading them in order helps, but you can use the book as a reference and hop from principle to principle.

Don't
// 👎 Avoid handlers with many responsibilities
const handler = async (req, res) => {
  const { name, email } = req.body

  if (!isValidName(name)) {
    return res.status(httpStatus.BAD_REQUEST).send()
  }

  if (!isValidEmail(email)) {
    return res.status(httpStatus.BAD_REQUEST).send()
  }

  await queryBuilder('user').insert({ name, email })]

  if (!isPromotionalPeriod()) {
    const promotionalCode = await queryBuilder
      .select('name')
      .from('promotional_codes')
      .where({ target: 'new_joiners' })

    transport.sendMail({
      // ...
    })
  }

  return res.status(httpStatus.CREATED).send(user)
}
Do
// 👍 Handlers should only handle HTTP logic
const handler = async (req, res) => {
  const { name, email } = req.body

  try {
    const user = userService.register(name, email)
    return res.status(httpStatus.CREATED).send(user)
  } catch (err) {
    return res
        .status(httpStatus.INTERNAL_SERVER_ERROR)
        .send()
  }
}

Not sure?

I believe that basic knowledge should be public and accessible so I have uploaded around a third of the book for free on my personal blog. It's been read by over 20K people in the last 6 months. You can take a look right now, no email required.

You can see what others had to say about it on Hacker News, the Bytes newsletter, the JS Weekly newsletter, and the Node Weekly newsletter.

Read the FREE version

(no email or credit card required)

Evergreen Knowledge

The JS ecosystem is constantly changing. Libraries come and go, tools evolve and best practices change. That's why I've only focused on the timeless principles you can apply to any project for years to come. It describes the fundamental software design concepts that will help you build maintainable applications.

Get the book

You buy me lunch and I tell you everything I know about Node & Express.

$19 (eBook)

Get the complete book. All 6 chapters, containing 125 principles, described in 190 pages. That's it.

About the author

I'm a software engineer by day, writer by night and Dungeons & Dragons enthusiast in between.

I started working with Node because I wanted to use the same language in the browser and on the server. Since then I've become passionate about this technology and I've used it in both startups and large corporations. Node's future is bright and I want to help others learn the best practices around it.

My aim is to pass down what I've learned about architecture and software design through my books. Tao of Node is the second in a series that started with Tao of React.

You can follow me on Twitter @AlexanderKondov, connect on LinkedIn or read more content at alexkondov.com.

FAQ

Why is it called Tao?

Tao is the absolute principle of the universe in Chinese philosophy. Tao of Node is a collection of my foundational principles for building applications.

Will this book teach me Node?

This isn't a book about the fundamentals. The best time to read it is when you are familiar with Node and Express (or another routing library) and want to take your skills to the next level.

Does it cover tools like databases?

The focus of the book is on software design and building web APIs. We cover popular tools and how to work with databases but it's not in depth.

How opinionated is it?

It describes the way I build Node services so you consider it opinionated. It's a good starting point that you can break out of depending on your problem.

Can I get a discount?

I want this book to be accessible. If you can't afford it message me on Twitter or LinkedIn and we'll sort it out.

What if I don't like it?

No worries, I'll give you a full refund.

© 2024 Alexander Kondov - Twitter, LinkedIn