In this course we are going to learn the Angular Ngrx library ecosystem, namely everything that revolves around the Ngrx Store and Ngrx Effects library, and store architectures in general.
The course covers the Angular 4 release (the previous release was Angular 2), and consists on building step-by-step a chat application.
One Of The Most Famous Bugs Of All Time ?
Let me take you through a journey in time. Let's jump on a time machine and go back to 2014: we find ourselves in the Facebook headquarters at Menlo Park. Not only we went back in time, but we found ourselves becoming part of one of the most advanced software development teams in the world.
You might think that the team would be busy adding some new feature, but at our arrival the team is working relentlessly trying to fix one particular bug: something as simple as a counter of unread messages in a chat system.
This is one of those situations that only a developer could understand. The team tries to fix the bug in all sorts of ways, but the bug keeps coming back, month after month ! The counter says that there are several unread messages: the user clicks on the counter and there is nothing there.
Its a super visible bug in the biggest web application in the world: 1.3 Billion users and counting, endless resources to spare, some of the very best software teams in the world.
And yet an apparently simple but highly elusive bug just keeps coming back: a counter is incorrectly calculated: how can this happen ? That's what you will find out in this course.
A Bug That Originated a New Architecture ?
How could such an advanced team with nearly limitless resources struggle to fix a single bug ? As a developer you might find that this situation is really not that surprising; you might have been in a place and time when you had to tell your manager that the application can't be saved: that its so badly written that its needs to be rebuilt from scratch.
If it has never happened to you, it probably will during your development career. You have found an architecture problem in your application: happens to every team.
In this course we are going to understand exactly what was the real problem behind the Facebook counter bug, and learn the new frontend software architecture that it originated: Flux.
This new architecture was presented to the world in a series of talks. Those talks included a demo of the original chat counter problem. Have you ever seen that demo chat application in the third talk of the Flux recommended talks ? That's what you will be building in this course.
What Will We Build In This Course ?
We are going to build step by step a chat application that reproduces the situation that the Facebook team faced with the unread messages counter. We are going to solve the problem not by using the original Flux dispatcher, instead we are going to use a derived single store RxJs-based solution: The Angular Reactive Extensions Ngrx Store.
We are going to use the Angular CLI to quickly scaffold an application, and implement the frontend of the chat application from scratch: from an empty folder - every line of code will be explained.
The backend will also be explained but we will initially get a running backend as a starting point, so that we focus on the frontend architecture and the store solution.
We are going to build the application using Reactive Programming principles and a set of libraries of the Angular Reactives Extensions (Ngrx) Ecosystem: this will include the Ngrx Store, Ngrx Effects, DB, Router integration.
We are going to cover the benefits of Immutability and OnPush change detection, its advantages and disadvantages.
What Will you Learn In this Course?
We are going to learn how to leverage Typescript to clearly define the domain model, the view model and even transfer models of our application, as well as the application state that goes inside the store.
We are going to learn what types of state are usually kept inside the store, and how they relate to the state in the database. We will learn all the usual concepts of Store architectures: Actions, Dispatching and Reducers.
We will cover the Ngrx Dev Tools including the time-traveling debugger, and we will introduce a small utility library to helps us debug RxJs applications in general. We will cover debugging techniques for our Typescript code in both the client and the server.
We will cover backend API design for frontends that use store architectures: what type of API to design if building an API from scratch, and how to integrate a store with existing APIs.
The course will start with a short architectural overview on the Facebook counter problem, Flux and unidirectional data flow. We will then dive straight into the building of the frontend of our chat application.
Once we have a store solution up and running we are going to introduce the Dev Tools and add more libraries of the Ngrx ecosystem step by step.
What Will You Be Able to to at the End Of This Course ?
The goal of the course is simple: you will be proficient in the Flux and single store architectures and will know when to use a store solution and why, what are the reasons and more common use cases for doing so.
You will be able to use Typescript to model all the data structures needed for the several different layers of your application. You will know how to develop applications using RxJs and the Ngrx Store, understand the concepts related to store architectures and know how to setup the developers tools and use the most important libraries of the Ngrx ecosystem.
Free samples of multiple parts of the course are available.
About the Angular University:
The Angular University aims to be the one place that you go in order to learn and keep up with the Angular ecosystem. We provide premium quality video tutorials, screencast style.
About the course instructor:
Hello, my name is Vasco and I'm a Software Developer with 17 years of experience, very seasoned building user interfaces with Angular. I've worked as a Frontend Developer/Architect in a large variety of enterprise projects throughout the years.
I worked on a ton of projects, everything from single page applications to help build the European Criminal Record Information Exchange System, to brand new e-banking portals, to corporate banking portals, and more. I've been a key part of internal framework teams that built frameworks for in-house departments of tens of developers. And that's just a few of them, please check my Linkedin for extensive recommendations.
I also love to teach, write and talk about technology. I am looking forward to be your Angular instructor,