The source code of this lab is open, and hosted on Github within the ‘ivans-innovation-lab-monorepos’ organziation.

Github organization is structured in two repos:

  • Backend (Java, Spring, Axonframework)
  • Frontend (TypeScript, Angular, Nrwl)

Dependiencies - tree

Backend

Exposes a REST API to be consumed by internal employees or partners.

Apache Maven is used as a project management and comprehension tool. Maven supports project aggregation in addition to project inheritance. Maven processes projects with multiple modules so you can work with them more effectively.

Patterns and techniques

  • Domain Driven Design
  • Command and Query Responsibility Separation (CQRS)
  • Event Sourcing

Frontend

It conusumes a REST API.

Application is generated with Angular CLI and Nrwl extensions for Angular.

Instead of having a large monolith, we have dozens of small libraries with well-defined public APIs (and an Nx Workspace ensures you only use your libraries’ public APIs). The libraries are hosting Angular modules.

Patterns and techniques

  • Atomic design
  • Feature Components vs Presentational Components