Contains infrastructure as code for running the demo app locally or in the cloud.
At present the applications consists of the following components:
A React UI that interacts with the Public API.
A publically facing GraphQL API. The responsibility of this API is to expose internal RESTful and gRPC APIs including the Product API, the Payments Service, and a Coffee Service (that is not shown) to end user interfaces.
A RESTful product API allowing CRUD operations on the company products. This service is backed by a PostgreSQL database.
gRCP based payments service which handles customer payments. This service is backed by a PostgreSQL database or a Redis queue.
Consul is used throughout the system, all service to service communication is secured using mTLS and Consul Connect.
Vault is used for secrets storage, dynamic databse credentials, and encryption as a service. Encryption can be done in the Payments Service using either Vault's Transit or Transform secrets engines.