Folder structure

The project folder contains four subfolders:

  • Codegen: contains all the YAML files that will be fed to the Code Architects Codegen engine to generate a fair share of the application codebase.
  • Client: contains the Angular front-end project.
  • Server: contains the .NET back-end projects.
  • Docs: contains the documentation section you are reading right now.

Codegen

Server

The back-end is written in .NET and implements the microservices pattern. A microservice is a small, independent piece of the application that is focused on a single task. This approach makes the whole application modular, highly maintainable, easily testable and loosely coupled.

ShoppingCart is comprised of the following microservices:

  • ShoppingCart.Store
  • ShoppingCart.Logistics
  • [Aggiungere gli altri microservizi]

The microservices are hosted inside Kubernetes and powered by Dapr, the Distributed Application Runtime. Dapr offers a collection of utilities and building blocks that help developers building scalable and resilient distributed applications. The client accesses the microservices via an API Gateway, which is implemented using Envoy.

Each microservice has its own subfolder and its Visual Studio solution, that will reference one or more source projects and the test projects. Furthermore, each subfolder will have its own Github module, to allow each project to be developed separately.

On the same level, we find the Dapr and the Envoy subfolders that hosts Dapr and Envoy configuration files, respectively.

The server folder also contains a Visual Studio solution which references the microservice projects and a docker-compose project. The folder also contains all the files needed to deploy the containers, like docker-compose.yml.

Dapr

The Dapr folder contains two subfolder: components and configuration. The former contains the configuration files for the Dapr building blocks, e.g., state store, pubsub, etc., while the latter contains global configuration files.

Envoy

This folder contains a single envoy.yaml file, which is responsible for configuring the Envoy API Gateway.

Client