Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/leytonoday/atlas-api-modular-monolith
The API for Legal Lighthouse (codename Atlas). A SaaS Product for legal services with AI. An ASP.NET Core with C# Modular Monolithic API
https://github.com/leytonoday/atlas-api-modular-monolith
asp-net-core c-sharp clean-architecture ddd domain-driven-design dot-net-core event-driven-architecture modular-monolith
Last synced: about 1 month ago
JSON representation
The API for Legal Lighthouse (codename Atlas). A SaaS Product for legal services with AI. An ASP.NET Core with C# Modular Monolithic API
- Host: GitHub
- URL: https://github.com/leytonoday/atlas-api-modular-monolith
- Owner: leytonoday
- Created: 2024-07-08T18:29:00.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-07-08T18:53:14.000Z (4 months ago)
- Last Synced: 2024-10-13T03:02:44.060Z (about 1 month ago)
- Topics: asp-net-core, c-sharp, clean-architecture, ddd, domain-driven-design, dot-net-core, event-driven-architecture, modular-monolith
- Language: C#
- Homepage:
- Size: 513 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Legal Lighthouse | Atlas
A SaaS product for legal document services using AI. The codename for the project is Atlas.
## Note
The following repositories were used as to learn many of the design patterns implemented in this codebase:
- https://github.com/PeterKneale/modular_monolith_saas
- https://github.com/kgrzybek/modular-monolith-with-ddd## Architecture
### Modular Monolith
- 3 modules (sub-domains) that are isolated and act as DDD bounded contexts:
- Users (generic sub-domain): contains the authentication, authorization, and user management features of Atlas
- Plans (supporting sub-domain): contains the SaaS functionality of Atlas with Stripe integration.
- Law (core sub-domain): contains the core busines logic for the legal document services with AI.
- Modules communicate using EDA (Event Driven Architecture). The inbox and outbox patterns are used to increase the reliability of messaging between the modules, with considerations for event idempotency. This, in theory, allows modules in Atlas to communicate with an exactly-once-guarantee. Each module exposes a public IntegrationEvents assembly that stores events that other modules can subscribe to, allowing for loosely coupled asynchronous communication between modules.
### Clean Architecture
- Each module within Atlas follows Clean Architecture and is comprised of 3 assemblies: Application, Domain, and Infrastructure.
- The Presentation layer of the Clean Architecture doesn’t have its own assembly, because for the sake of simplicity, these have been consolidated into the Atlas.Web assembly for all modules.
- The domain assembly hosts the business entities and their respective repositories, as well as core business logic that is common across all applications within an organisation for this business entity. The application assembly hosts the CQRS code, where all application specific business logic lies, as well as where orchestration between business entities and external systems takes place. The infrastructure assembly provides concrete implementations for services that interact with external services (where the interfaces are defined in the application layer). This might include services for the database (concretions of repository interfaces defined in the domain layer), or services for AI, such as OpenAI’s GPT-4.## API Design Patterns and Techniques
- Façade Pattern
- Mediator Pattern
- CQRS
- Composition Root Pattern
- Inbox and Outbox Patterns
- Repository Pattern
- Unit of Work Pattern
- DDD (Domain Driven Design)
- Decorator Pattern