Prerequisites and Assumptions
Before you get going with this process, you should be aware that we assume you possess some knowledge already. If you do not feel comfortable with the subjects listed below, then you should probably revisit those topics in another forum (there are many options for learning these skills online for free).
If you are missing any of the technology described below, then you should definitely install whatever apps or tools are needed.
Basic HTML and CSS
It's essential for you to know basic HTML and CSS. You should be comfortable marking up content and writing styles using traditional methods. We will advance those skills to allow you to use more modern methods of putting together HTML and CSS so that you can build better webapps.
Basic Javascript
You should know how to use JavaScript components on your pages, and how to write your own scripts to create the features you want. If you are at the "beginner" or "intermediate" level of JavaScript usage, then that's probably about right: You can manage your variables, functions, objects, and logic; you can leverage plugins and other more complex things made by other people; you can follow instructions to implement somewhat complex features such as asynchronous data calls to a third party API using jquery.ajax()
or similar.
This book will advance your JavaScript skills and expose you to another way of thinking about how to organize your code and logic.
Basic command line
You should not be afraid of the Terminal app (although if you prefer to use iTerm2 you would not be alone). You will want to use a *nix console emulator like CMDER or the new "Bash on Ubuntu on Windows" feature of Windows 10 if you are using a Windows PC. (NOTE: You can do much of this in Powershell, too, but those techniques diverge significantly from the ones described in this book.) You may have already tried working with Linux or Unix and seen what the command line looks like.
Modern web developers use the command line all the time because it allows us to easily manage the many components of our projects, and it mimics the environment our projects run in on a public server. Many developers love the command line and the speed and ease of use. This book will regularly expect you to use the command line to manage your development tools.
Your preferred text editor
There are many opinions online about what editor is best. For this work, you do not need a "heavy" development tool (like Visual Studio or Eclipse). Many web developers prefer to use more streamlined text editors focused on providing a high quality code writing experience. You will need a text editor that you can use to edit files. This must be a plaintext editor (you cannot use Word or Pages).
Two popular choices of text editors today are Atom (a project sponsored by Github) and Sublime Text. Both editors are incredibly good, and either is an excellent choice. There are many other good choices out there, too, but this book is agnostic about which editor you use. As long as it allows you to comfortably make changes to text files, you should be fine.
Image and media editors / authoring
Any web application will benefit from lovely design and presentation. Lovely design and presentation often benefit from custom media (images, patterns, icons, video, etc.). Unfortunately, covering the ins and outs of how to make great media to go with a webapp would be a whole new book. The projects described in this book do not specifically require any media making. For anything requiring images or other media files, you can use publicly available resources (and links to sites where you can find such resources are provided where they are referenced).
You are encouraged to learn more about making great media files, and explore the many options for creating media for your webapp. You are also encouraged to explore the many options available to buy or commission custom media work from artists and makers who do that for a living. (There's no shame in reaching out to others to make your projects as great as they can be. Remember that building webapps is a team sport, in spite of the fact that you may be learning to code on your own.)