Public API
The Payment Gateway is composed of several subdomains (AKA bounded contexts in DDD lingo), each matching a Modular Monolith Subcomponent. However, for performance reasons it exposes types and business logic in separate modules. Importing types won't induce a significant performance penalty at application load time, whereas business logics will require all their dependencies.
Type definitions¶
Public definitions from all subcomponents are gathered in the same modules:
- Enums ⧉: Basic enum types
- Exceptions ⧉: Basic exceptions
- Entities ⧉: Entity dataclasses and all their related types and enums
Business logic¶
Business logic is split into separate modules for each publicly exposed subdomain:
Events¶
- Events ⧉: Domain events published via events pipeline
Commands¶
All commands are gathered under the same Flask group:
- Commands ⧉: All flask commands