Excalibur is a modular framework designed to simplify Domain-Driven Design (DDD) implementations. It provides tools and abstractions for building robust, scalable, and testable applications. It provides tools, abstractions, and helpers for efficient data integration, multi-database support, and hosting flexibility, whether as web services or background jobs.
-
Aggregates and Repositories:
- Base classes for managing domain aggregates.
- Extensible repositories for CRUD and custom operations.
-
Value Objects:
- Immutability and equality mechanisms to align with DDD principles.
-
Query Providers:
- Abstractions for encapsulating domain-specific SQL logic into reusable and testable components.
-
Data Queries:
- Encapsulation of SQL queries into modular
DataQuery<T>
classes. - Separation of SQL logic from business logic for enhanced testability.
- Encapsulation of SQL queries into modular
-
Multi-Database Support:
- Out-of-the-box support for PostgreSQL and SQL Server.
- Easily extensible for other databases by implementing query providers.
-
Query Providers:
- Interfaces and database-specific implementations (e.g., PostgreSQL, SQL Server).
- Abstract SQL queries into reusable, testable components.
- Synchronization helpers for integrating external APIs with your database.
- Structured logging and caching mechanisms for optimized data handling.
- Helpers for deploying services as:
- Web Services: Build RESTful APIs or GraphQL endpoints using ASP.NET Core.
- Job Services: Background job support for tasks such as syncing or processing data.
- Support for multiple database types (PostgreSQL, SQL Server).
- Plug-and-play query providers for easy extensibility.
- .NET SDK 8.0 or higher: Download .NET SDK
- Database: PostgreSQL or SQL Server.
- NuGet Packages:
- Configure the framework in an ASP.NET Core application.
- Implement background jobs for syncing or processing data.
-
Unit Tests:
- Use
xUnit
withshouldly
for assertions andFakeItEasy
to mock dependencies in clear well defined tests. - Focus on services and repositories in isolation.
- Use
-
Integration Tests:
- Test
DataQuery
classes with real databases (PostgreSQL or SQL Server). - Validate query provider correctness.
- Test
-
Functional Tests:
- Simulate end-to-end flows for APIs or job services.
Full documentation for Excalibur Framework is available in our GitHub Wiki.
🔹 Learn how to get started, configure modules, and explore advanced features.
🔹 Find integration details and best practices.
📚 View the Documentation →
We welcome contributions! Check out our Contributing Guidelines to get started.