With so many tools and options for frontend development with Angular, these days starting new apps is as easy as taking a starter kit from Github or maybe run a few CLI commands and you are on your way. Unfortunately, our CLI tools or starter kits do not know the complexity of our application so it is in our hands to make the right decisions when adding a new block of code or make architectural decisions. In this course, we are going to focus not only on building a solid foundation for your application but also on explaining and making you sure you understand the reasons and benefits behind those decisions so you can make your owns later on.