System Design
About 1 min
System Design
High Level Design
The high level design of the system is based on the following components:
No | Name | Usecase | Technology |
---|---|---|---|
1 | back office | An admin-facing website that allows administrators to manage products, categories, and customers | Next.js 14.0 |
2 | identity server | An authentication server that provides authentication and authorization services for the application | Duende IdentityServer 7.0 |
3 | bff | A backend for frontend that provides data to the admin-facing website | Yarp |
4 | store front | A user-facing website that allows customers to view, rate, and purchase products | Razor, htmx, Alphine.js, ///_hyperscript |
5 | web api | A REST API that provides data to the user-facing and admin-facing websites | ASP.NET Core 8.0 |
6 | cache | A distributed lock manager, cache and cart storage | Redis |
7 | database | A relational database that stores the application's data and email outbox | Postgres, Marten |
8 | observability | A telemetry data collector that collects and exports telemetry data to the Aspire Dashboard | OpenTelemetry |
9 | ai platform | An AI platform that provides AI services for the application | OpenAI, Tavily |
Why BFF Authentication?
Backend for Frontend (BFF) Authentication is a security approach designed to optimize both user experience and security in web applications. Utilizing standard OAuth flows, BFF Authentication enables backend clients to authenticate users seamlessly, setting up session cookies to maintain secure and smooth interactions.
Patterns Used
- Domain-Driven Design (DDD)
- Domain Events
- CQRS
- Mediator
- Chain of Responsibility
- Repository
- Specification
- Options
- Factory
- Decorator
- REPR
- Builder
C4 Model
System Context Diagram
Container Diagram
Component Diagram
TODO: Add component diagram