Ordinary online retail service with service oriented architecture.
At some point it may evolve into coarse-grained microservices architecture.
RabbitMQ with custom configuration. Transport for MassTransit service bus.
SPA in Vue.js 3. Combines multiple microfrontends into a single UI for the application.
Uses OIDC-Client to obtain access and identity tokens.
ASP.NET Core Web API with MassTransit. Uses saga to process order in each state. Pushes logs to ElasticSearch with Serilog.
WebComponents in vanilla JavaScript, served with nginx. Provides fragments for other views.
<sales-buy>
- displays "buy button" for product with given ID, emitsproduct_added_to_cart
event<sales-cart>
- displays cart count, consumesproduct_added_to_cart
to update state
MassTransit console app. Collects payment for the orders. Uses key-value store to keep state.
Redis key-value store.
MassTransit console app. Ships order products to the customer. Manages state in NoSQL database.
MongoDB NoSQL database.
ASP.NET Core Web API. Simple CRUD for products information. Uses Dapper with relational database.
PostgreSQL relational database.
Svelte UI for product catalog CRUD operations. Uses no-auth endpoint.
MassTransit console app. Implements "You may also like" feature for products with graph database.
Neo4j graph database.
ELK stack - ElasticSearch. Used to aggregate logs from services.
ELK stack - Kibana. Used to browse logs from services.
IdentityServer4. Handles OICD authentication and OAuth 2.0 authorization with RSA256 signed JWT.
RSA is preffered over HMAC, as such tokens can be verified by other services which cached Auth's public key.
Jaeger instance. Used to collect and visualize traces of inter-service requests in OpenTelemetry format.
Example HTTP requests to various services.