Introduction
— Sun Tzu
Long gone are the times when JavaScript was just a scripting language to add simple interactive behaviour to websites. The ECMAScript 2015 standard significantly improved the usability of the language. Excellent UI libraries like React allow you to write straightforward declarative code which massively simplifies building user interfaces. Thanks to Node.js you can write JavaScript on the server. Next.js empowers you to write complex APIs very quickly and PostgreSQL provides a relational database that fits right in with the other tools. The Next.js stack therefore allows you to quickly develop complex applications using just one language - JavaScript (with optional type hints via TypeScript).
This book serves as an introduction to the Next.js stack. However you don't learn software development by just reading books, you learn it by creating projects. We will therefore not bombard you with useless language trivia for hundreds of pages. If you care about that, go read the standard - it's pretty comprehensive. Instead we will create a real software project - an application for managing tasks called easy-opus (get it?). We will begin with nothing more than an empty project directory and the will to learn. We will end with a useful piece of software that allows us to create tasks, assign tasks to different users, update their statuses and much more.
This book is therefore inherently practical - unlike some other literature we will not dwell much on theoretical considerations. On the other hand, purely practical concerns are first-class citizens here (for example there is an entire chapter devoted to hosting your application). This doesn't mean that theory bad, practice good. It simply means that the approach for this particular book is heavily geared towards completing a real software project.
This book is therefore also not about becoming yet another JavaScript guru™ (there are already too many of them). It's about writing a useful product. It is fundamentally about getting things done. The Next.js stack is really just a tool we use to get things done.
This book is suitable for both beginners who want to pick up their first tech stack as well as for seasoned software developers looking to expand their knowledge.
This book is intended to be a standalone resource. While there are resources for further reading in each section, these are merely pointers if you want to dive deeper into a certain topic. You don't have to read them and you should be able to understand everything without reading them. In fact, if you are hard stuck in a certain place, this probably represents a failure on our part. Maybe we didn't explain an important concept well enough (or at all!). Don't hesitate to write an email to uhasker@protonmail.com
or to create an issue at https://github.com/uhasker/getting-things-done-in-next-js
explaining your problem.
Happy hacking
Mikhail Berkov