The Architect's Guide to Angular

Angular has grown steadily more popular since its release, and a growing number of books are now available to teach programmers how to use it. But building an application involves a lot more than just writing code: in order to be performant and maintainable, the application must have some over-arching architectural plan that ties its pieces together and gives direction to future growth.
However, the world of the web is ever-changing, and to keep up to date requires an understanding of not just where things are, but where things have been, and where things will go. Why do we encourage the use of OnPush change detection over other methods? The specific pains of angular.js may never have been felt by some, but knowing why unidrectional data flow is valuable makes sense when you have had to deal with dozens of $watch statements in your code, unable to figure out what change triggered which result. How do modern patterns, for example headless cms systems like Contentful, work with Angular? How do we prepare for the increasing encroachment of AI into all spaces of software development?
We answer some of those questions in this guide, but like the web, this remains a living document, that we hope to keep constantly up to date with the information most valuable to you.