When you have all your codebase within the same repository it’s tempting to fall into the trap of creating a monolith (a gigantic application where all parts are intertwined with each other) so we need to ensure that modularity is a first class citizen within these repositories.
Each package has clearly defined boundaries and ownership.
To build high-performance apps with #Angular you need 2 parts State management & a rendering system with the principle of locality in mind. we are using NGXS for State Management and @rx-angular/template for zoneless Rendering System
**'Root'** will still be the default for most services. It makes it very convenient to create tree-shakable services which are singleton within an application.
**'Platform'** is most likely used for creating shared services for Angular Elements. If you know another use case, please let me know an create a PR on this article.
**'Any'** is very helpful to make sure a service is a singleton within module boundaries. It's a robust alternative to 'root' to make sure the individual modules don't have a side effect on each other.
Shoud I use mergeMap or concatMap or switchMap or forkJoin for my usecase?
Short Answer: concatMap for writes, mergeMap for reads, switchMap when you have to cancel http call.
TL;DR: mergeMap doesn’t preserve the order, concatMap does preserve the order. switchMap cancels previous inner Observables when a new inner Observable appears Ref blog Ref blog Ref blog
Secure Angular App with KeyCloak?
in this project, we are demonstrating how to secure UI and backend APIs using following OIDC Flows.