From 12658f6b0c7ed2436fa69dc9d06e63d73d175031 Mon Sep 17 00:00:00 2001
From: Meysam Hadeli <35596795+meysamhadeli@users.noreply.github.com>
Date: Sat, 15 Mar 2025 16:54:20 +0330
Subject: [PATCH] docs: update documentation
---
1-Monolith-Architecture-Style/README.md | 30 +++
.../README.md | 29 +++
3-Microservices-Architecture-Style/README.md | 143 ++++++++++++
.../src/ApiGateway/src/ApiGateway.csproj | 2 +-
.../Booking/src/Booking/Booking.csproj | 2 +-
.../Services/Flight/src/Flight/Flight.csproj | 4 +-
.../Identity/src/Identity/Identity.csproj | 2 +-
.../Passenger/src/Passenger/Passenger.csproj | 2 +-
README.md | 215 ++++++------------
.../BuildingBlocks.csproj | 0
.../Caching/CachingBehavior.cs | 0
.../Caching/ICacheRequest.cs | 0
.../Caching/IInvalidateCacheRequest.cs | 0
.../Caching/InvalidateCachingBehavior.cs | 0
.../EventBus.Messages/FlighContracts.cs | 0
.../EventBus.Messages/IdentityContracts.cs | 0
.../EventBus.Messages/PassengerContracts.cs | 0
.../EventBus.Messages/ReservationContracts.cs | 0
.../Core/CQRS/ICommand.cs | 0
.../Core/CQRS/ICommandHandler.cs | 0
.../Core/CQRS/IQuery.cs | 0
.../Core/CQRS/IQueryHandler.cs | 0
.../Core/Event/EventType.cs | 0
.../Core/Event/IDomainEvent.cs | 0
.../Core/Event/IEvent.cs | 0
.../Core/Event/IHaveIntegrationEvent.cs | 0
.../Core/Event/IIntegrationEvent.cs | 0
.../Core/Event/IInternalCommand.cs | 0
.../Core/Event/InternalCommand.cs | 0
.../Core/Event/MessageEnvelope.cs | 0
.../Core/EventDispatcher.cs | 0
.../Core/IEventDispatcher.cs | 0
.../Core/IEventMapper.cs | 0
.../Core/IntegrationEventWrapper.cs | 0
.../Core/Model/Aggregate.cs | 0
.../Core/Model/Entity.cs | 0
.../Core/Model/IAggregate.cs | 0
.../Core/Model/IEntity.cs | 0
.../Core/Model/IVersion.cs | 0
.../Core/Pagination/Extensions.cs | 0
.../Core/Pagination/IPageList.cs | 0
.../Core/Pagination/IPageQuery.cs | 0
.../Core/Pagination/IPageRequest.cs | 0
.../Core/Pagination/PageList.cs | 0
.../EFCore/AppDbContextBase.cs | 0
.../EFCore/DesignTimeDbContextFactoryBase.cs | 0
.../EFCore/EfTxBehavior.cs | 0
.../EFCore/Extensions.cs | 0
.../EFCore/IDataSeeder.cs | 0
.../EFCore/IDbContext.cs | 0
.../EFCore/ISeedManager.cs | 0
.../EFCore/PostgresOptions.cs | 0
.../EFCore/SeedManagers.cs | 0
.../BackgroundWorkers/BackgroundWorker.cs | 0
.../EventStoreDB/Config.cs | 0
.../Events/AggregateEventSourcing.cs | 0
.../Events/AggregateStreamExtensions.cs | 0
.../EventStoreDB/Events/EventTypeMapper.cs | 0
.../Events/IAggregateEventSourcing.cs | 0
.../EventStoreDB/Events/IEventHandler.cs | 0
.../EventStoreDB/Events/IExternalEvent.cs | 0
.../EventStoreDB/Events/IProjection.cs | 0
.../EventStoreDB/Events/StreamEvent.cs | 0
.../Events/StreamEventExtensions.cs | 0
.../EventStoreDB/Events/StreamNameMapper.cs | 0
.../EventStoreDB/Extensions.cs | 0
.../Projections/IProjectionProcessor.cs | 0
.../Projections/IProjectionPublisher.cs | 0
.../Projections/ProjectionPublisher.cs | 0
.../Repository/EventStoreDBRepository.cs | 0
.../Repository/RepositoryExtensions.cs | 0
.../Serialization/EventStoreDBSerializer.cs | 0
.../JsonObjectContractProvider.cs | 0
.../NonDefaultConstructorContractResolver.cs | 0
.../Serialization/SerializationExtensions.cs | 0
...StoreDBSubscriptionCheckpointRepository.cs | 0
.../EventStoreDBSubscriptionToAll.cs | 0
.../ISubscriptionCheckpointRepository.cs | 0
...nMemorySubscriptionCheckpointRepository.cs | 0
.../Exception/AggregateNotFoundException.cs | 0
.../Exception/AppException.cs | 0
.../Exception/BadRequestException.cs | 0
.../Exception/ConflictException.cs | 0
.../Exception/CustomException.cs | 0
.../Exception/GrpcExceptionInterceptor.cs | 0
.../Exception/InternalServerException.cs | 0
.../Exception/NotFoundException.cs | 0
.../Exception/ProblemDetailsWithCode.cs | 0
.../Exception/ValidationException.cs | 0
.../HealthCheck/Extensions.cs | 0
.../HealthCheck/HealthOptions.cs | 0
.../Jwt/AuthHeaderHandler.cs | 0
.../Jwt/JwtExtensions.cs | 0
.../Logging/Extensions.cs | 0
.../Logging/FileOptions.cs | 0
.../Logging/LogEnrichHelper.cs | 0
.../Logging/LogOptions.cs | 0
.../Logging/LoggingBehavior.cs | 0
.../Mapster/Extensions.cs | 0
.../MassTransit/ConsumeFilter.cs | 0
.../MassTransit/Extensions.cs | 0
.../MassTransit/RabbitMqOptions.cs | 0
.../Mongo/Extensions.cs | 0
.../Mongo/IMongoDbContext.cs | 0
.../Mongo/IMongoRepository.cs | 0
.../Mongo/IMongoUnitOfWork.cs | 0
.../Mongo/IRepository.cs | 0
.../Mongo/ITransactionAble.cs | 0
.../Mongo/IUnitOfWork.cs | 0
.../Mongo/ImmutablePocoConvention.cs | 0
.../MicroBootstrap.Persistence.Mongo.csproj | 0
.../Mongo/MongoDbContext.cs | 0
.../Mongo/MongoOptions.cs | 0
.../Mongo/MongoRepository.cs | 0
.../Mongo/MongoUnitOfWork.cs | 0
.../OpenApi/Extensions.cs | 0
.../SecuritySchemeDocumentTransformer.cs | 0
.../ActivityExtensions.cs | 0
.../OpenTelemetryCollector/ActivityInfo.cs | 0
.../ObservabilityPipelineBehavior.cs | 0
.../Commands/CommandHandlerActivity.cs | 0
.../Commands/CommandHandlerMetrics.cs | 0
.../Query/QueryHandlerActivity.cs | 0
.../Query/QueryHandlerMetrics.cs | 0
.../CreateActivityInfo.cs | 0
.../CustomeDiagnosticsProvider.cs | 0
.../IDiagnosticsProvider.cs | 0
.../OpenTelemetryCollector/Extensions.cs | 0
.../ObservabilityConstant.cs | 0
.../ObservabilityOptions.cs | 0
.../OpenTelemetryCollector/TelemetryTags.cs | 0
.../PersistMessageProcessor/Extensions.cs | 0
.../IPersistMessageDbContext.cs | 0
.../IPersistMessageProcessor.cs | 0
.../MessageDeliveryType.cs | 0
.../PersistMessageProcessor/MessageStatus.cs | 0
.../PersistMessageProcessor/PersistMessage.cs | 0
.../PersistMessageBackgroundService.cs | 0
.../PersistMessageDbContext.cs | 0
.../PersistMessageOptions.cs | 0
.../PersistMessageProcessor.cs | 0
.../Polly/CircuitBreakerOptions.cs | 0
.../Polly/Extensions.cs | 0
.../Polly/GrpcCircuitBreaker.cs | 0
.../Polly/GrpcRetry.cs | 0
.../Polly/HttpClientCircuitBreaker.cs | 0
.../Polly/HttpClientRetry.cs | 0
.../Polly/PolicyOptions.cs | 0
.../Polly/RetryOptions.cs | 0
.../ProblemDetails/Extensions.cs | 0
.../TestBase/TestBase.cs | 0
.../TestBase/TestContainers.cs | 0
.../Utils/NoSynchronizationContextScope.cs | 0
.../Utils/ServiceLocator.cs | 0
.../Utils/TypeProvider.cs | 0
.../Validation/Extensions.cs | 0
.../Validation/ValidationBehavior.cs | 0
.../Validation/ValidationError.cs | 0
.../Validation/ValidationResultModel.cs | 0
.../Web/ApiVersioningExtensions.cs | 0
.../Web/AppOptions.cs | 0
.../Web/BaseController.cs | 0
.../Web/ConfigurationExtensions.cs | 0
.../Web/ConfigurationHelper.cs | 0
.../Web/CorrelationExtensions.cs | 0
.../Web/CurrentUserProvider.cs | 0
.../Web/EndpointConfig.cs | 0
.../Web/IMinimalEndpoint.cs | 0
.../Web/MinimalApiExtensions.cs | 0
.../Web/ServiceCollectionExtensions.cs | 0
.../Web/ServiceProviderExtensions.cs | 0
.../Web/SlugifyParameterTransformer.cs | 0
legacy-to-modern-architecture-styles.sln | 22 +-
173 files changed, 293 insertions(+), 158 deletions(-)
create mode 100644 1-Monolith-Architecture-Style/README.md
create mode 100644 2-Modular-Monolith-Architecture-Style/README.md
create mode 100644 3-Microservices-Architecture-Style/README.md
rename {BuildingBlocks => building-blocks}/BuildingBlocks.csproj (100%)
rename {BuildingBlocks => building-blocks}/Caching/CachingBehavior.cs (100%)
rename {BuildingBlocks => building-blocks}/Caching/ICacheRequest.cs (100%)
rename {BuildingBlocks => building-blocks}/Caching/IInvalidateCacheRequest.cs (100%)
rename {BuildingBlocks => building-blocks}/Caching/InvalidateCachingBehavior.cs (100%)
rename {BuildingBlocks => building-blocks}/Contracts/EventBus.Messages/FlighContracts.cs (100%)
rename {BuildingBlocks => building-blocks}/Contracts/EventBus.Messages/IdentityContracts.cs (100%)
rename {BuildingBlocks => building-blocks}/Contracts/EventBus.Messages/PassengerContracts.cs (100%)
rename {BuildingBlocks => building-blocks}/Contracts/EventBus.Messages/ReservationContracts.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/CQRS/ICommand.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/CQRS/ICommandHandler.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/CQRS/IQuery.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/CQRS/IQueryHandler.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Event/EventType.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Event/IDomainEvent.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Event/IEvent.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Event/IHaveIntegrationEvent.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Event/IIntegrationEvent.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Event/IInternalCommand.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Event/InternalCommand.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Event/MessageEnvelope.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/EventDispatcher.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/IEventDispatcher.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/IEventMapper.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/IntegrationEventWrapper.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Model/Aggregate.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Model/Entity.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Model/IAggregate.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Model/IEntity.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Model/IVersion.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Pagination/Extensions.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Pagination/IPageList.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Pagination/IPageQuery.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Pagination/IPageRequest.cs (100%)
rename {BuildingBlocks => building-blocks}/Core/Pagination/PageList.cs (100%)
rename {BuildingBlocks => building-blocks}/EFCore/AppDbContextBase.cs (100%)
rename {BuildingBlocks => building-blocks}/EFCore/DesignTimeDbContextFactoryBase.cs (100%)
rename {BuildingBlocks => building-blocks}/EFCore/EfTxBehavior.cs (100%)
rename {BuildingBlocks => building-blocks}/EFCore/Extensions.cs (100%)
rename {BuildingBlocks => building-blocks}/EFCore/IDataSeeder.cs (100%)
rename {BuildingBlocks => building-blocks}/EFCore/IDbContext.cs (100%)
rename {BuildingBlocks => building-blocks}/EFCore/ISeedManager.cs (100%)
rename {BuildingBlocks => building-blocks}/EFCore/PostgresOptions.cs (100%)
rename {BuildingBlocks => building-blocks}/EFCore/SeedManagers.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/BackgroundWorkers/BackgroundWorker.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Config.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Events/AggregateEventSourcing.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Events/AggregateStreamExtensions.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Events/EventTypeMapper.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Events/IAggregateEventSourcing.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Events/IEventHandler.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Events/IExternalEvent.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Events/IProjection.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Events/StreamEvent.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Events/StreamEventExtensions.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Events/StreamNameMapper.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Extensions.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Projections/IProjectionProcessor.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Projections/IProjectionPublisher.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Projections/ProjectionPublisher.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Repository/EventStoreDBRepository.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Repository/RepositoryExtensions.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Serialization/EventStoreDBSerializer.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Serialization/JsonObjectContractProvider.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Serialization/NonDefaultConstructorContractResolver.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Serialization/SerializationExtensions.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Subscriptions/EventStoreDBSubscriptionCheckpointRepository.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Subscriptions/EventStoreDBSubscriptionToAll.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Subscriptions/ISubscriptionCheckpointRepository.cs (100%)
rename {BuildingBlocks => building-blocks}/EventStoreDB/Subscriptions/InMemorySubscriptionCheckpointRepository.cs (100%)
rename {BuildingBlocks => building-blocks}/Exception/AggregateNotFoundException.cs (100%)
rename {BuildingBlocks => building-blocks}/Exception/AppException.cs (100%)
rename {BuildingBlocks => building-blocks}/Exception/BadRequestException.cs (100%)
rename {BuildingBlocks => building-blocks}/Exception/ConflictException.cs (100%)
rename {BuildingBlocks => building-blocks}/Exception/CustomException.cs (100%)
rename {BuildingBlocks => building-blocks}/Exception/GrpcExceptionInterceptor.cs (100%)
rename {BuildingBlocks => building-blocks}/Exception/InternalServerException.cs (100%)
rename {BuildingBlocks => building-blocks}/Exception/NotFoundException.cs (100%)
rename {BuildingBlocks => building-blocks}/Exception/ProblemDetailsWithCode.cs (100%)
rename {BuildingBlocks => building-blocks}/Exception/ValidationException.cs (100%)
rename {BuildingBlocks => building-blocks}/HealthCheck/Extensions.cs (100%)
rename {BuildingBlocks => building-blocks}/HealthCheck/HealthOptions.cs (100%)
rename {BuildingBlocks => building-blocks}/Jwt/AuthHeaderHandler.cs (100%)
rename {BuildingBlocks => building-blocks}/Jwt/JwtExtensions.cs (100%)
rename {BuildingBlocks => building-blocks}/Logging/Extensions.cs (100%)
rename {BuildingBlocks => building-blocks}/Logging/FileOptions.cs (100%)
rename {BuildingBlocks => building-blocks}/Logging/LogEnrichHelper.cs (100%)
rename {BuildingBlocks => building-blocks}/Logging/LogOptions.cs (100%)
rename {BuildingBlocks => building-blocks}/Logging/LoggingBehavior.cs (100%)
rename {BuildingBlocks => building-blocks}/Mapster/Extensions.cs (100%)
rename {BuildingBlocks => building-blocks}/MassTransit/ConsumeFilter.cs (100%)
rename {BuildingBlocks => building-blocks}/MassTransit/Extensions.cs (100%)
rename {BuildingBlocks => building-blocks}/MassTransit/RabbitMqOptions.cs (100%)
rename {BuildingBlocks => building-blocks}/Mongo/Extensions.cs (100%)
rename {BuildingBlocks => building-blocks}/Mongo/IMongoDbContext.cs (100%)
rename {BuildingBlocks => building-blocks}/Mongo/IMongoRepository.cs (100%)
rename {BuildingBlocks => building-blocks}/Mongo/IMongoUnitOfWork.cs (100%)
rename {BuildingBlocks => building-blocks}/Mongo/IRepository.cs (100%)
rename {BuildingBlocks => building-blocks}/Mongo/ITransactionAble.cs (100%)
rename {BuildingBlocks => building-blocks}/Mongo/IUnitOfWork.cs (100%)
rename {BuildingBlocks => building-blocks}/Mongo/ImmutablePocoConvention.cs (100%)
rename {BuildingBlocks => building-blocks}/Mongo/MicroBootstrap.Persistence.Mongo.csproj (100%)
rename {BuildingBlocks => building-blocks}/Mongo/MongoDbContext.cs (100%)
rename {BuildingBlocks => building-blocks}/Mongo/MongoOptions.cs (100%)
rename {BuildingBlocks => building-blocks}/Mongo/MongoRepository.cs (100%)
rename {BuildingBlocks => building-blocks}/Mongo/MongoUnitOfWork.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenApi/Extensions.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenApi/SecuritySchemeDocumentTransformer.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenTelemetryCollector/ActivityExtensions.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenTelemetryCollector/ActivityInfo.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenTelemetryCollector/Behaviors/ObservabilityPipelineBehavior.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenTelemetryCollector/CoreDiagnostics/Commands/CommandHandlerActivity.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenTelemetryCollector/CoreDiagnostics/Commands/CommandHandlerMetrics.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenTelemetryCollector/CoreDiagnostics/Query/QueryHandlerActivity.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenTelemetryCollector/CoreDiagnostics/Query/QueryHandlerMetrics.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenTelemetryCollector/CreateActivityInfo.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenTelemetryCollector/DiagnosticsProvider/CustomeDiagnosticsProvider.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenTelemetryCollector/DiagnosticsProvider/IDiagnosticsProvider.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenTelemetryCollector/Extensions.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenTelemetryCollector/ObservabilityConstant.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenTelemetryCollector/ObservabilityOptions.cs (100%)
rename {BuildingBlocks => building-blocks}/OpenTelemetryCollector/TelemetryTags.cs (100%)
rename {BuildingBlocks => building-blocks}/PersistMessageProcessor/Extensions.cs (100%)
rename {BuildingBlocks => building-blocks}/PersistMessageProcessor/IPersistMessageDbContext.cs (100%)
rename {BuildingBlocks => building-blocks}/PersistMessageProcessor/IPersistMessageProcessor.cs (100%)
rename {BuildingBlocks => building-blocks}/PersistMessageProcessor/MessageDeliveryType.cs (100%)
rename {BuildingBlocks => building-blocks}/PersistMessageProcessor/MessageStatus.cs (100%)
rename {BuildingBlocks => building-blocks}/PersistMessageProcessor/PersistMessage.cs (100%)
rename {BuildingBlocks => building-blocks}/PersistMessageProcessor/PersistMessageBackgroundService.cs (100%)
rename {BuildingBlocks => building-blocks}/PersistMessageProcessor/PersistMessageDbContext.cs (100%)
rename {BuildingBlocks => building-blocks}/PersistMessageProcessor/PersistMessageOptions.cs (100%)
rename {BuildingBlocks => building-blocks}/PersistMessageProcessor/PersistMessageProcessor.cs (100%)
rename {BuildingBlocks => building-blocks}/Polly/CircuitBreakerOptions.cs (100%)
rename {BuildingBlocks => building-blocks}/Polly/Extensions.cs (100%)
rename {BuildingBlocks => building-blocks}/Polly/GrpcCircuitBreaker.cs (100%)
rename {BuildingBlocks => building-blocks}/Polly/GrpcRetry.cs (100%)
rename {BuildingBlocks => building-blocks}/Polly/HttpClientCircuitBreaker.cs (100%)
rename {BuildingBlocks => building-blocks}/Polly/HttpClientRetry.cs (100%)
rename {BuildingBlocks => building-blocks}/Polly/PolicyOptions.cs (100%)
rename {BuildingBlocks => building-blocks}/Polly/RetryOptions.cs (100%)
rename {BuildingBlocks => building-blocks}/ProblemDetails/Extensions.cs (100%)
rename {BuildingBlocks => building-blocks}/TestBase/TestBase.cs (100%)
rename {BuildingBlocks => building-blocks}/TestBase/TestContainers.cs (100%)
rename {BuildingBlocks => building-blocks}/Utils/NoSynchronizationContextScope.cs (100%)
rename {BuildingBlocks => building-blocks}/Utils/ServiceLocator.cs (100%)
rename {BuildingBlocks => building-blocks}/Utils/TypeProvider.cs (100%)
rename {BuildingBlocks => building-blocks}/Validation/Extensions.cs (100%)
rename {BuildingBlocks => building-blocks}/Validation/ValidationBehavior.cs (100%)
rename {BuildingBlocks => building-blocks}/Validation/ValidationError.cs (100%)
rename {BuildingBlocks => building-blocks}/Validation/ValidationResultModel.cs (100%)
rename {BuildingBlocks => building-blocks}/Web/ApiVersioningExtensions.cs (100%)
rename {BuildingBlocks => building-blocks}/Web/AppOptions.cs (100%)
rename {BuildingBlocks => building-blocks}/Web/BaseController.cs (100%)
rename {BuildingBlocks => building-blocks}/Web/ConfigurationExtensions.cs (100%)
rename {BuildingBlocks => building-blocks}/Web/ConfigurationHelper.cs (100%)
rename {BuildingBlocks => building-blocks}/Web/CorrelationExtensions.cs (100%)
rename {BuildingBlocks => building-blocks}/Web/CurrentUserProvider.cs (100%)
rename {BuildingBlocks => building-blocks}/Web/EndpointConfig.cs (100%)
rename {BuildingBlocks => building-blocks}/Web/IMinimalEndpoint.cs (100%)
rename {BuildingBlocks => building-blocks}/Web/MinimalApiExtensions.cs (100%)
rename {BuildingBlocks => building-blocks}/Web/ServiceCollectionExtensions.cs (100%)
rename {BuildingBlocks => building-blocks}/Web/ServiceProviderExtensions.cs (100%)
rename {BuildingBlocks => building-blocks}/Web/SlugifyParameterTransformer.cs (100%)
diff --git a/1-Monolith-Architecture-Style/README.md b/1-Monolith-Architecture-Style/README.md
new file mode 100644
index 0000000..69f1778
--- /dev/null
+++ b/1-Monolith-Architecture-Style/README.md
@@ -0,0 +1,30 @@
+# ๐ช Monolith Architecture Style
+
+> In **Monolith Architecture**, the entire application is built as a single, tightly coupled unit. All components (e.g., Api, business logic, and data access) are part of the same codebase and deployed together.
+
+# Table of Contents
+
+- [Key Features](#key-features)
+- [When to Use](#when-to-use)
+- [Challenges](#challenges)
+
+
+## Key Features
+1. **Single Codebase**: All components (UI, business logic, data access) are part of one project.
+2. **Tight Coupling**: Components are highly dependent on each other, making changes riskier.
+3. **Simple Deployment**: The entire application is deployed as a single unit.
+4. **Centralized Database**: Typically uses a single database for all data storage and access.
+
+
+## When to Use
+1. **Small to Medium Projects**: Ideal for applications with limited complexity and scope.
+2. **Rapid Development**: Suitable for projects requiring quick development and deployment.
+3. **Small Teams**: Works well for small teams with limited resources.
+4. **Low Scalability Needs**: Best for applications with predictable and low traffic.
+
+
+## Challenges
+- Harder to maintain as the codebase grows.
+- Limited scalability (scaling requires scaling the entire application).
+- Difficult to adopt new technologies incrementally.
+
diff --git a/2-Modular-Monolith-Architecture-Style/README.md b/2-Modular-Monolith-Architecture-Style/README.md
new file mode 100644
index 0000000..7be076b
--- /dev/null
+++ b/2-Modular-Monolith-Architecture-Style/README.md
@@ -0,0 +1,29 @@
+# ๐ช Modular Monolith Architecture Style
+
+> In **Modular Monolith Architecture**, the application is divided into modules, each responsible for a specific functionality. However, the entire application is still deployed as a single unit.
+
+# Table of Contents
+
+- [Key Features](#key-features)
+- [When to Use](#when-to-use)
+- [Challenges](#challenges)
+
+
+## Key Features
+1. **Modular Design**: The application is divided into modules, each responsible for a specific functionality.
+2. **Loose Coupling**: Modules interact through well-defined interfaces, improving maintainability.
+3. **Single Deployment**: The entire application is still deployed as one unit.
+4. **Shared Database**: Typically uses a single database, but modules can have their own schemas or tables.
+
+
+## When to Use
+1. **Medium to Large Projects**: Suitable for applications with growing complexity but not ready for microservices.
+2. **Better Maintainability**: Ideal for teams wanting a more organized and maintainable codebase than a traditional monolith.
+3. **Future-Proofing**: A stepping stone toward microservices, allowing teams to prepare for future scalability.
+4. **Single Team or Small Teams**: Works well for teams that want modularity without the overhead of distributed systems.
+
+
+## Challenges
+- Still a single deployment unit, so scaling is limited.
+- Requires careful design to avoid tight coupling between modules.
+- Not as scalable or fault-tolerant as microservices.
diff --git a/3-Microservices-Architecture-Style/README.md b/3-Microservices-Architecture-Style/README.md
new file mode 100644
index 0000000..42e018f
--- /dev/null
+++ b/3-Microservices-Architecture-Style/README.md
@@ -0,0 +1,143 @@
+# ๐ช Microservices Architecture Style
+
+> In **Microservices Architecture**, the application is broken down into small, independent services, each responsible for a specific business capability. Each service can be developed, deployed, and scaled independently.
+
+# Table of Contents
+
+- [Key Features](#key-features)
+- [When to Use](#when-to-use)
+- [Challenges](#challenges)
+- [Microservices Architecture Design](#microservices-architecture-design)
+- [Development Setup](#development-setup)
+ - [Dotnet Tools Packages](#dotnet-tools-packages)
+ - [Husky](#husky)
+ - [Upgrade Nuget Packages](#upgrade-nuget-packages)
+- [How to Run](#how-to-run)
+ - [Config Certificate](#config-certificate)
+ - [Docker Compose](#docker-compose)
+ - [Kubernetes](#kubernetes)
+ - [Build](#build)
+ - [Run](#run)
+ - [Test](#test)
+- [Documentation Apis](#documentation-apis)
+
+
+## Key Features
+1. **Independent Services**: Each service is a separate project with its own database and deployment pipeline, enabling independent development and deployment.
+2. **Decentralized Communication**: Services communicate via APIs (REST, gRPC) or message brokers (RabbitMQ, Kafka), ensuring loose coupling and resilience.
+3. **Scalability**: Services can be scaled independently based on demand, allowing efficient resource utilization.
+4. **Fault Tolerance**: Failures are isolated, preventing cascading failures and ensuring high availability.
+5. **Technology Agnostic**: Services can use different technologies, frameworks, or databases, providing flexibility.
+
+
+## When to Use
+1. **Large and Complex Projects**: Ideal for applications with complex business logic that can be broken into smaller, manageable services.
+2. **High Scalability Needs**: Suitable for applications requiring independent scaling of components.
+3. **Fault Tolerance and High Availability**: Perfect for systems where failure isolation and uptime are critical.
+4. **Distributed Teams**: Enables teams to work independently on different services.
+5. **Frequent Updates**: Supports continuous deployment and A/B testing for individual services.
+6. **Technology Diversity**: Allows the use of different technologies for different services.
+
+
+## Challenges
+- Increased complexity in management, DevOps overhead, data consistency, latency, and higher costs.
+
+
+## Microservices Architecture Design
+
+
+
+
+## Development Setup
+
+### Dotnet Tools Packages
+For installing our requirement packages with .NET cli tools, we need to install `dotnet tool manifest`.
+```bash
+dotnet new tool-manifest
+```
+And after that we can restore our dotnet tools packages with .NET cli tools from `.config` folder and `dotnet-tools.json` file.
+```
+dotnet tool restore
+```
+
+### Husky
+Here we use `husky` to handel some pre commit rules and we used `conventional commits` rules and `formatting` as pre commit rules, here in [package.json](./package.json). of course, we can add more rules for pre commit in future. (find more about husky in the [documentation](https://typicode.github.io/husky/get-started.html))
+We need to install `husky` package for `manage` `pre commits hooks` and also I add two packages `@commitlint/cli` and `@commitlint/config-conventional` for handling conventional commits rules in [package.json](./package.json).
+Run the command bellow in the root of project to install all npm dependencies related to husky:
+
+```bash
+npm install
+```
+
+> Note: In the root of project we have `.husky` folder and it has `commit-msg` file for handling conventional commits rules with provide user friendly message and `pre-commit` file that we can run our `scripts` as a `pre-commit` hooks. that here we call `format` script from [package.json](./package.json) for formatting purpose.
+
+### Upgrade Nuget Packages
+For upgrading our nuget packages to last version, we use the great package [dotnet-outdated](https://github.com/dotnet-outdated/dotnet-outdated).
+Run the command below in the root of project to upgrade all of packages to last version:
+```bash
+dotnet outdated -u
+```
+
+## How to Run
+
+> ### Config Certificate
+Run the following commands to [Config SSL](https://docs.microsoft.com/en-us/aspnet/core/security/docker-compose-https?view=aspnetcore-6.0) in your system:
+
+#### Windows using Linux containers
+```bash
+dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p password
+dotnet dev-certs https --trust
+```
+***Note:** for running this command in `powershell` use `$env:USERPROFILE` instead of `%USERPROFILE%`*
+
+#### macOS or Linux
+```bash
+dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
+dotnet dev-certs https --trust
+```
+> ### Docker Compose
+
+
+To run this app in `Docker`, use the [docker-compose.yaml](./deployments/docker-compose/docker-compose.yaml) and execute the below command at the `root` of the application:
+
+```bash
+docker-compose -f ./deployments/docker-compose/docker-compose.yaml up -d
+```
+
+> ### Kubernetes
+To `configure TLS` in the `Kubernetes cluster`, we need to install `cert-manager` based on the [docs](https://cert-manager.io/docs/installation) and run the following commands to apply TLS in our application. Here, we use [Let's Encrypt](https://letsencrypt.org/) to encrypt our certificate.
+
+```bash
+kubectl apply -f ./deployments/kubernetes/booking-cert-manager.yml
+```
+
+To apply all necessary `deployments`, `pods`, `services`, `ingress`, and `config maps`, please run the following command:
+
+```bash
+kubectl apply -f ./deployments/kubernetes/booking-microservices.yml
+```
+
+> ### Build
+To `build` all microservices, run this command in the `root` of the project:
+```bash
+dotnet build
+```
+
+> ### Run
+To `run` each microservice, run this command in the root of the `Api` folder of each microservice where the `csproj` file is located:
+```bash
+dotnet run
+```
+
+> ### Test
+
+To `test` all microservices, run this command in the `root` of the project:
+```bash
+dotnet test
+```
+
+> ### Documentation Apis
+
+Each microservice provides `API documentation` and navigate to `/swagger` for `Swagger OpenAPI` or `/scalar/v1` for `Scalar OpenAPI` to visit list of endpoints.
+
+As part of API testing, I created the [booking.rest](./../booking.rest) file which can be run with the [REST Client](https://github.com/Huachao/vscode-restclient) `VSCode plugin`.
\ No newline at end of file
diff --git a/3-Microservices-Architecture-Style/src/ApiGateway/src/ApiGateway.csproj b/3-Microservices-Architecture-Style/src/ApiGateway/src/ApiGateway.csproj
index 93fff20..161a9d9 100644
--- a/3-Microservices-Architecture-Style/src/ApiGateway/src/ApiGateway.csproj
+++ b/3-Microservices-Architecture-Style/src/ApiGateway/src/ApiGateway.csproj
@@ -1,5 +1,5 @@
-
+
diff --git a/3-Microservices-Architecture-Style/src/Services/Booking/src/Booking/Booking.csproj b/3-Microservices-Architecture-Style/src/Services/Booking/src/Booking/Booking.csproj
index 08a30e8..0764bb5 100644
--- a/3-Microservices-Architecture-Style/src/Services/Booking/src/Booking/Booking.csproj
+++ b/3-Microservices-Architecture-Style/src/Services/Booking/src/Booking/Booking.csproj
@@ -20,7 +20,7 @@
-
+
diff --git a/3-Microservices-Architecture-Style/src/Services/Flight/src/Flight/Flight.csproj b/3-Microservices-Architecture-Style/src/Services/Flight/src/Flight/Flight.csproj
index 11e6fca..f8b586c 100644
--- a/3-Microservices-Architecture-Style/src/Services/Flight/src/Flight/Flight.csproj
+++ b/3-Microservices-Architecture-Style/src/Services/Flight/src/Flight/Flight.csproj
@@ -37,7 +37,7 @@
-
+
-
+
diff --git a/3-Microservices-Architecture-Style/src/Services/Identity/src/Identity/Identity.csproj b/3-Microservices-Architecture-Style/src/Services/Identity/src/Identity/Identity.csproj
index 952e036..fb89397 100644
--- a/3-Microservices-Architecture-Style/src/Services/Identity/src/Identity/Identity.csproj
+++ b/3-Microservices-Architecture-Style/src/Services/Identity/src/Identity/Identity.csproj
@@ -18,7 +18,7 @@
-
+
diff --git a/3-Microservices-Architecture-Style/src/Services/Passenger/src/Passenger/Passenger.csproj b/3-Microservices-Architecture-Style/src/Services/Passenger/src/Passenger/Passenger.csproj
index e914cdd..6530411 100644
--- a/3-Microservices-Architecture-Style/src/Services/Passenger/src/Passenger/Passenger.csproj
+++ b/3-Microservices-Architecture-Style/src/Services/Passenger/src/Passenger/Passenger.csproj
@@ -23,7 +23,7 @@
-
+
diff --git a/README.md b/README.md
index dffc0ef..c571d7b 100644
--- a/README.md
+++ b/README.md
@@ -12,35 +12,27 @@
# Table of Contents
- [The Goals of This Project](#the-goals-of-this-project)
-- [Plan](#plan)
- [Technologies - Libraries](#technologies---libraries)
+- [Architectural Style](#architectural-style)
+ - [How to Choose the Right Architecture](#how-to-choose-the-right-architecture)
+ - [1. Monolithic Architecture](#1-monolithic-architecture)
+ - [2. Modular Monolith Architecture](#2-modular-monolith-architecture)
+ - [3. Microservices Architecture](#3-microservices-architecture)
- [The Domain and Bounded Context - Service Boundary](#the-domain-and-bounded-context---service-boundary)
- [Structure of Project](#structure-of-project)
-- [Development Setup](#development-setup)
- - [Dotnet Tools Packages](#dotnet-tools-packages)
- - [Husky](#husky)
- - [Upgrade Nuget Packages](#upgrade-nuget-packages)
-- [How to Run](#how-to-run)
- - [Config Certificate](#config-certificate)
- - [Docker Compose](#docker-compose)
- - [Kubernetes](#kubernetes)
- - [Build](#build)
- - [Run](#run)
- - [Test](#test)
-- [Documentation Apis](#documentation-apis)
- [Support](#support)
- [Contribution](#contribution)
## The Goals of This Project
- :sparkle: Using `Vertical Slice Architecture` for `architecture` level.
-- :sparkle: Using `Domain Driven Design (DDD)` to implement all `business processes` in microservices.
-- :sparkle: Using `Rabbitmq` on top of `Masstransit` for `Event Driven Architecture` between our microservices.
-- :sparkle: Using `gRPC` for `internal communication` between our microservices.
+- :sparkle: Using `Domain Driven Design (DDD)` to implement all `business logic`.
+- :sparkle: Using `Rabbitmq` on top of `Masstransit` for `Event Driven Architecture`.
+- :sparkle: Using `gRPC` for `internal communication`.
- :sparkle: Using `CQRS` implementation with `MediatR` library.
-- :sparkle: Using `Postgres` for `write side` of some microservices.
-- :sparkle: Using `MongoDB` for `read side` of some microservices.
-- :sparkle: Using `Event Store` for `write side` of Booking-Microservice to store all `historical state` of aggregate.
+- :sparkle: Using `Postgres` for `write side` database.
+- :sparkle: Using `MongoDB` for `read side` database.
+- :sparkle: Using `Event Store` for `write side` of Booking Microservice/Module to store all `historical change` of aggregate.
- :sparkle: Using `Inbox Pattern` for ensuring message idempotency for receiver and `Exactly once Delivery`.
- :sparkle: Using `Outbox Pattern` for ensuring no message is lost and there is at `At Least One Delivery`.
- :sparkle: Using `Unit Testing` for testing small units and mocking our dependencies with `Nsubstitute`.
@@ -59,22 +51,6 @@
- :sparkle: Using `Nginx Ingress Controller` for `load balancing` between our microservices top of `Kubernetes`.
- :sparkle: Using `cert-manager` to Configure `TLS` in `kubernetes cluster`.
-## Plan
-
-> ๐This project is a work in progress, new features will be added over time.๐
-
-I will try to register future goals and additions in the [Issues](https://github.com/meysamhadeli/booking-microservices/issues) section of this repository.
-
-High-level plan is represented in the table
-
-| Feature | Status |
-| ----------------- | -------------- |
-| API Gateway | Completed โ๏ธ |
-| Identity Service | Completed โ๏ธ |
-| Flight Service | Completed โ๏ธ |
-| Passenger Service | Completed โ๏ธ |
-| Booking Service | Completed โ๏ธ |
-| Building Blocks | Completed โ๏ธ |
## Technologies - Libraries
@@ -106,6 +82,67 @@ High-level plan is represented in the table
- โ๏ธ **[`Testcontainers`](https://github.com/testcontainers/testcontainers-dotnet)** - Testcontainers for .NET is a library to support tests with throwaway instances of Docker containers.
- โ๏ธ **[`K6`](https://github.com/grafana/k6)** - Modern load testing for developers and testers in the DevOps era.
+## Architectural Style
+
+The repository is organized into three folders, each representing a different `architectural style`:
+
+1. **1-monolith-architecture-style**: A traditional monolithic architecture where all components of the application are tightly coupled and deployed as a single unit.
+2. **2-modular-monolith-architecture-style**: A modular monolith architecture where the application is divided into modules, but still deployed as a single unit. This approach promotes better separation of concerns and maintainability.
+3. **3-microservices-architecture-style**: A microservices architecture where the application is broken down into small, independent services that can be developed, deployed, and scaled independently.
+
+## How to Choose the Right Architecture
+
+The choice of architecture depends on your project requirements, team size, scalability needs, and long-term maintenance goals. Below is a guide to help you decide which architecture to choose:
+
+### 1. Monolithic Architecture
+- **When to Choose**:
+ - Your project is small or medium-sized.
+ - You have a small development team.
+ - You need to develop and deploy the application quickly.
+ - The application has relatively simple functionality.
+ - You donโt anticipate significant scaling needs in the near future.
+- **Pros**:
+ - Simple to develop, test, and deploy.
+ - Easier to manage for small teams.
+ - Lower operational overhead.
+- **Cons**:
+ - Tight coupling makes it harder to maintain as the codebase grows.
+ - Scaling is limited to scaling the entire application.
+ - Difficult to adopt new technologies or frameworks incrementally.
+
+### 2. Modular Monolith Architecture
+- **When to Choose**:
+ - Your project is medium to large-sized.
+ - You want better separation of concerns and maintainability than a traditional monolith.
+ - You plan to scale the application in the future but want to avoid the complexity of microservices.
+ - Your team is growing, and you need a more organized codebase.
+- **Pros**:
+ - Better separation of concerns compared to a traditional monolith.
+ - Easier to maintain and extend as the application grows.
+ - Can be a stepping stone toward a microservices architecture.
+ - Simpler deployment than microservices.
+- **Cons**:
+ - Still a single deployment unit, so scaling is limited.
+ - Requires careful design to avoid tight coupling between modules.
+
+### 3. Microservices Architecture
+- **When to Choose**:
+ - Your project is large and complex.
+ - You need to scale different parts of the application independently.
+ - Your team is large and can handle the complexity of distributed systems.
+ - You need to adopt different technologies or frameworks for different parts of the application.
+ - You require high availability and fault tolerance.
+- **Pros**:
+ - Independent development, deployment, and scaling of services.
+ - Better fault isolation.
+ - Flexibility to use different technologies for different services.
+ - Easier to maintain and update individual services.
+- **Cons**:
+ - Higher complexity in development, testing, and deployment.
+ - Requires robust DevOps practices and infrastructure.
+ - Increased operational overhead (e.g., monitoring, logging, service discovery).
+
+
## The Domain And Bounded Context - Service Boundary
- `Identity Service`: The Identity Service is a bounded context for the authentication and authorization of users using [Identity Server](https://github.com/DuendeSoftware/IdentityServer). This service is responsible for creating new users and their corresponding roles and permissions using [.Net Core Identity](https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity) and Jwt authentication and authorization.
@@ -116,22 +153,11 @@ High-level plan is represented in the table
- `Booking Service`: The Booking Service is a bounded context for managing all operation related to booking ticket.
-
## Structure of Project
In this project I used a mix of [clean architecture](https://jasontaylor.dev/clean-architecture-getting-started/), [vertical slice architecture](https://jimmybogard.com/vertical-slice-architecture/) and I used [feature folder structure](http://www.kamilgrzybek.com/design/feature-folders/) to structure my files.
-I used [yarp reverse proxy](https://microsoft.github.io/reverse-proxy/articles/index.html) to route synchronous and asynchronous requests to the corresponding microservice. Each microservice has its dependencies such as databases, files etc. Each microservice is decoupled from other microservices and developed and deployed separately. Microservices talk to each other with Rest or gRPC for synchronous calls and use RabbitMq or Kafka for asynchronous calls.
-
-We have a separate microservice ([IdentityServer](https://github.com/DuendeSoftware/IdentityServer)) for authentication and authorization of each request. Once signed-in users are issued a JWT token. This token is used by other microservices to validate the user, read claims and allow access to authorized/role specific endpoints.
-
-I used [RabbitMQ](https://github.com/rabbitmq) as my MessageBroker for async communication between microservices using the eventual consistency mechanism. Each microservice uses [MassTransit](https://github.com/MassTransit/MassTransit) to interface with [RabbitMQ](https://github.com/rabbitmq) providing, messaging, availability, reliability, etc.
-
-Microservices are `event based` which means they can publish and/or subscribe to any events occurring in the setup. By using this approach for communicating between services, each microservice does not need to know about the other services or handle errors occurred in other microservices.
-
-After saving data in write side, I save a [Internal Command](https://github.com/kgrzybek/modular-monolith-with-ddd#38-internal-processing) record in my Persist Messages storage (like something we do in outbox pattern) and after committing transaction in write side, trigger our command handler in read side and this handler could save their read models in our MongoDB database.
-
I treat each request as a distinct use case or slice, encapsulating and grouping all concerns from front-end to back.
When adding or changing a feature in an application in n-tire architecture, we are typically touching many "layers" in an application. We are changing the user interface, adding fields to models, modifying validation, and so on. Instead of coupling across a layer, we couple vertically along a slice. We `minimize coupling` `between slices`, and `maximize coupling` `in a slice`.
@@ -153,99 +179,6 @@ I used CQRS to decompose my features into small parts that makes our application
Using the CQRS pattern, we cut each business functionality into vertical slices, for each of these slices we group classes (see [technical folders structure](http://www.kamilgrzybek.com/design/feature-folders)) specific to that feature together (command, handlers, infrastructure, repository, controllers, etc). In our CQRS pattern each command/query handler is a separate slice. This is where you can reduce coupling between layers. Each handler can be a separated code unit, even copy/pasted. Thanks to that, we can tune down the specific method to not follow general conventions (e.g. use custom SQL query or even different storage). In a traditional layered architecture, when we change the core generic mechanism in one layer, it can impact all methods.
-## Development Setup
-
-### Dotnet Tools Packages
-For installing our requirement packages with .NET cli tools, we need to install `dotnet tool manifest`.
-```bash
-dotnet new tool-manifest
-```
-And after that we can restore our dotnet tools packages with .NET cli tools from `.config` folder and `dotnet-tools.json` file.
-```
-dotnet tool restore
-```
-
-### Husky
-Here we use `husky` to handel some pre commit rules and we used `conventional commits` rules and `formatting` as pre commit rules, here in [package.json](./package.json). of course, we can add more rules for pre commit in future. (find more about husky in the [documentation](https://typicode.github.io/husky/get-started.html))
-We need to install `husky` package for `manage` `pre commits hooks` and also I add two packages `@commitlint/cli` and `@commitlint/config-conventional` for handling conventional commits rules in [package.json](./package.json).
-Run the command bellow in the root of project to install all npm dependencies related to husky:
-
-```bash
-npm install
-```
-
-> Note: In the root of project we have `.husky` folder and it has `commit-msg` file for handling conventional commits rules with provide user friendly message and `pre-commit` file that we can run our `scripts` as a `pre-commit` hooks. that here we call `format` script from [package.json](./package.json) for formatting purpose.
-
-### Upgrade Nuget Packages
-For upgrading our nuget packages to last version, we use the great package [dotnet-outdated](https://github.com/dotnet-outdated/dotnet-outdated).
-Run the command below in the root of project to upgrade all of packages to last version:
-```bash
-dotnet outdated -u
-```
-
-## How to Run
-
-> ### Config Certificate
-Run the following commands to [Config SSL](https://docs.microsoft.com/en-us/aspnet/core/security/docker-compose-https?view=aspnetcore-6.0) in your system:
-
-#### Windows using Linux containers
-```bash
-dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p password
-dotnet dev-certs https --trust
-```
-***Note:** for running this command in `powershell` use `$env:USERPROFILE` instead of `%USERPROFILE%`*
-
-#### macOS or Linux
-```bash
-dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
-dotnet dev-certs https --trust
-```
-> ### Docker Compose
-
-
-To run this app in `Docker`, use the [docker-compose.yaml](./deployments/docker-compose/docker-compose.yaml) and execute the below command at the `root` of the application:
-
-```bash
-docker-compose -f ./deployments/docker-compose/docker-compose.yaml up -d
-```
-
-> ### Kubernetes
-To `configure TLS` in the `Kubernetes cluster`, we need to install `cert-manager` based on the [docs](https://cert-manager.io/docs/installation) and run the following commands to apply TLS in our application. Here, we use [Let's Encrypt](https://letsencrypt.org/) to encrypt our certificate.
-
-```bash
-kubectl apply -f ./deployments/kubernetes/booking-cert-manager.yml
-```
-
-To apply all necessary `deployments`, `pods`, `services`, `ingress`, and `config maps`, please run the following command:
-
-```bash
-kubectl apply -f ./deployments/kubernetes/booking-microservices.yml
-```
-
-> ### Build
-To `build` all microservices, run this command in the `root` of the project:
-```bash
-dotnet build
-```
-
-> ### Run
-To `run` each microservice, run this command in the root of the `Api` folder of each microservice where the `csproj` file is located:
-```bash
-dotnet run
-```
-
-> ### Test
-
-To `test` all microservices, run this command in the `root` of the project:
-```bash
-dotnet test
-```
-
-> ### Documentation Apis
-
-Each microservice provides `API documentation` and navigate to `/swagger` for `Swagger OpenAPI` or `/scalar/v1` for `Scalar OpenAPI` to visit list of endpoints.
-
-As part of API testing, I created the [booking.rest](./booking.rest) file which can be run with the [REST Client](https://github.com/Huachao/vscode-restclient) `VSCode plugin`.
# Support
@@ -257,7 +190,7 @@ Thanks a bunch for supporting me!
## Contribution
-Thanks to all [contributors](https://github.com/meysamhadeli/booking-microservices/graphs/contributors), you're awesome and this wouldn't be possible without you! The goal is to build a categorized, community-driven collection of very well-known resources.
+Thanks to all [contributors](https://github.com/meysamhadeli/legacy-to-modern-architecture-styles/graphs/contributors), you're awesome and this wouldn't be possible without you! The goal is to build a categorized, community-driven collection of very well-known resources.
Please follow this [contribution guideline](./CONTRIBUTION.md) to submit a pull request or create the issue.
@@ -270,4 +203,4 @@ Please follow this [contribution guideline](./CONTRIBUTION.md) to submit a pull
- [https://github.com/pdevito3/MessageBusTestingInMemHarness](https://github.com/pdevito3/MessageBusTestingInMemHarness)
## License
-This project is made available under the MIT license. See [LICENSE](https://github.com/meysamhadeli/booking-microservices/blob/main/LICENSE) for details.
+This project is made available under the MIT license. See [LICENSE](https://github.com/meysamhadeli/legacy-to-modern-architecture-styles/blob/main/LICENSE) for details.
diff --git a/BuildingBlocks/BuildingBlocks.csproj b/building-blocks/BuildingBlocks.csproj
similarity index 100%
rename from BuildingBlocks/BuildingBlocks.csproj
rename to building-blocks/BuildingBlocks.csproj
diff --git a/BuildingBlocks/Caching/CachingBehavior.cs b/building-blocks/Caching/CachingBehavior.cs
similarity index 100%
rename from BuildingBlocks/Caching/CachingBehavior.cs
rename to building-blocks/Caching/CachingBehavior.cs
diff --git a/BuildingBlocks/Caching/ICacheRequest.cs b/building-blocks/Caching/ICacheRequest.cs
similarity index 100%
rename from BuildingBlocks/Caching/ICacheRequest.cs
rename to building-blocks/Caching/ICacheRequest.cs
diff --git a/BuildingBlocks/Caching/IInvalidateCacheRequest.cs b/building-blocks/Caching/IInvalidateCacheRequest.cs
similarity index 100%
rename from BuildingBlocks/Caching/IInvalidateCacheRequest.cs
rename to building-blocks/Caching/IInvalidateCacheRequest.cs
diff --git a/BuildingBlocks/Caching/InvalidateCachingBehavior.cs b/building-blocks/Caching/InvalidateCachingBehavior.cs
similarity index 100%
rename from BuildingBlocks/Caching/InvalidateCachingBehavior.cs
rename to building-blocks/Caching/InvalidateCachingBehavior.cs
diff --git a/BuildingBlocks/Contracts/EventBus.Messages/FlighContracts.cs b/building-blocks/Contracts/EventBus.Messages/FlighContracts.cs
similarity index 100%
rename from BuildingBlocks/Contracts/EventBus.Messages/FlighContracts.cs
rename to building-blocks/Contracts/EventBus.Messages/FlighContracts.cs
diff --git a/BuildingBlocks/Contracts/EventBus.Messages/IdentityContracts.cs b/building-blocks/Contracts/EventBus.Messages/IdentityContracts.cs
similarity index 100%
rename from BuildingBlocks/Contracts/EventBus.Messages/IdentityContracts.cs
rename to building-blocks/Contracts/EventBus.Messages/IdentityContracts.cs
diff --git a/BuildingBlocks/Contracts/EventBus.Messages/PassengerContracts.cs b/building-blocks/Contracts/EventBus.Messages/PassengerContracts.cs
similarity index 100%
rename from BuildingBlocks/Contracts/EventBus.Messages/PassengerContracts.cs
rename to building-blocks/Contracts/EventBus.Messages/PassengerContracts.cs
diff --git a/BuildingBlocks/Contracts/EventBus.Messages/ReservationContracts.cs b/building-blocks/Contracts/EventBus.Messages/ReservationContracts.cs
similarity index 100%
rename from BuildingBlocks/Contracts/EventBus.Messages/ReservationContracts.cs
rename to building-blocks/Contracts/EventBus.Messages/ReservationContracts.cs
diff --git a/BuildingBlocks/Core/CQRS/ICommand.cs b/building-blocks/Core/CQRS/ICommand.cs
similarity index 100%
rename from BuildingBlocks/Core/CQRS/ICommand.cs
rename to building-blocks/Core/CQRS/ICommand.cs
diff --git a/BuildingBlocks/Core/CQRS/ICommandHandler.cs b/building-blocks/Core/CQRS/ICommandHandler.cs
similarity index 100%
rename from BuildingBlocks/Core/CQRS/ICommandHandler.cs
rename to building-blocks/Core/CQRS/ICommandHandler.cs
diff --git a/BuildingBlocks/Core/CQRS/IQuery.cs b/building-blocks/Core/CQRS/IQuery.cs
similarity index 100%
rename from BuildingBlocks/Core/CQRS/IQuery.cs
rename to building-blocks/Core/CQRS/IQuery.cs
diff --git a/BuildingBlocks/Core/CQRS/IQueryHandler.cs b/building-blocks/Core/CQRS/IQueryHandler.cs
similarity index 100%
rename from BuildingBlocks/Core/CQRS/IQueryHandler.cs
rename to building-blocks/Core/CQRS/IQueryHandler.cs
diff --git a/BuildingBlocks/Core/Event/EventType.cs b/building-blocks/Core/Event/EventType.cs
similarity index 100%
rename from BuildingBlocks/Core/Event/EventType.cs
rename to building-blocks/Core/Event/EventType.cs
diff --git a/BuildingBlocks/Core/Event/IDomainEvent.cs b/building-blocks/Core/Event/IDomainEvent.cs
similarity index 100%
rename from BuildingBlocks/Core/Event/IDomainEvent.cs
rename to building-blocks/Core/Event/IDomainEvent.cs
diff --git a/BuildingBlocks/Core/Event/IEvent.cs b/building-blocks/Core/Event/IEvent.cs
similarity index 100%
rename from BuildingBlocks/Core/Event/IEvent.cs
rename to building-blocks/Core/Event/IEvent.cs
diff --git a/BuildingBlocks/Core/Event/IHaveIntegrationEvent.cs b/building-blocks/Core/Event/IHaveIntegrationEvent.cs
similarity index 100%
rename from BuildingBlocks/Core/Event/IHaveIntegrationEvent.cs
rename to building-blocks/Core/Event/IHaveIntegrationEvent.cs
diff --git a/BuildingBlocks/Core/Event/IIntegrationEvent.cs b/building-blocks/Core/Event/IIntegrationEvent.cs
similarity index 100%
rename from BuildingBlocks/Core/Event/IIntegrationEvent.cs
rename to building-blocks/Core/Event/IIntegrationEvent.cs
diff --git a/BuildingBlocks/Core/Event/IInternalCommand.cs b/building-blocks/Core/Event/IInternalCommand.cs
similarity index 100%
rename from BuildingBlocks/Core/Event/IInternalCommand.cs
rename to building-blocks/Core/Event/IInternalCommand.cs
diff --git a/BuildingBlocks/Core/Event/InternalCommand.cs b/building-blocks/Core/Event/InternalCommand.cs
similarity index 100%
rename from BuildingBlocks/Core/Event/InternalCommand.cs
rename to building-blocks/Core/Event/InternalCommand.cs
diff --git a/BuildingBlocks/Core/Event/MessageEnvelope.cs b/building-blocks/Core/Event/MessageEnvelope.cs
similarity index 100%
rename from BuildingBlocks/Core/Event/MessageEnvelope.cs
rename to building-blocks/Core/Event/MessageEnvelope.cs
diff --git a/BuildingBlocks/Core/EventDispatcher.cs b/building-blocks/Core/EventDispatcher.cs
similarity index 100%
rename from BuildingBlocks/Core/EventDispatcher.cs
rename to building-blocks/Core/EventDispatcher.cs
diff --git a/BuildingBlocks/Core/IEventDispatcher.cs b/building-blocks/Core/IEventDispatcher.cs
similarity index 100%
rename from BuildingBlocks/Core/IEventDispatcher.cs
rename to building-blocks/Core/IEventDispatcher.cs
diff --git a/BuildingBlocks/Core/IEventMapper.cs b/building-blocks/Core/IEventMapper.cs
similarity index 100%
rename from BuildingBlocks/Core/IEventMapper.cs
rename to building-blocks/Core/IEventMapper.cs
diff --git a/BuildingBlocks/Core/IntegrationEventWrapper.cs b/building-blocks/Core/IntegrationEventWrapper.cs
similarity index 100%
rename from BuildingBlocks/Core/IntegrationEventWrapper.cs
rename to building-blocks/Core/IntegrationEventWrapper.cs
diff --git a/BuildingBlocks/Core/Model/Aggregate.cs b/building-blocks/Core/Model/Aggregate.cs
similarity index 100%
rename from BuildingBlocks/Core/Model/Aggregate.cs
rename to building-blocks/Core/Model/Aggregate.cs
diff --git a/BuildingBlocks/Core/Model/Entity.cs b/building-blocks/Core/Model/Entity.cs
similarity index 100%
rename from BuildingBlocks/Core/Model/Entity.cs
rename to building-blocks/Core/Model/Entity.cs
diff --git a/BuildingBlocks/Core/Model/IAggregate.cs b/building-blocks/Core/Model/IAggregate.cs
similarity index 100%
rename from BuildingBlocks/Core/Model/IAggregate.cs
rename to building-blocks/Core/Model/IAggregate.cs
diff --git a/BuildingBlocks/Core/Model/IEntity.cs b/building-blocks/Core/Model/IEntity.cs
similarity index 100%
rename from BuildingBlocks/Core/Model/IEntity.cs
rename to building-blocks/Core/Model/IEntity.cs
diff --git a/BuildingBlocks/Core/Model/IVersion.cs b/building-blocks/Core/Model/IVersion.cs
similarity index 100%
rename from BuildingBlocks/Core/Model/IVersion.cs
rename to building-blocks/Core/Model/IVersion.cs
diff --git a/BuildingBlocks/Core/Pagination/Extensions.cs b/building-blocks/Core/Pagination/Extensions.cs
similarity index 100%
rename from BuildingBlocks/Core/Pagination/Extensions.cs
rename to building-blocks/Core/Pagination/Extensions.cs
diff --git a/BuildingBlocks/Core/Pagination/IPageList.cs b/building-blocks/Core/Pagination/IPageList.cs
similarity index 100%
rename from BuildingBlocks/Core/Pagination/IPageList.cs
rename to building-blocks/Core/Pagination/IPageList.cs
diff --git a/BuildingBlocks/Core/Pagination/IPageQuery.cs b/building-blocks/Core/Pagination/IPageQuery.cs
similarity index 100%
rename from BuildingBlocks/Core/Pagination/IPageQuery.cs
rename to building-blocks/Core/Pagination/IPageQuery.cs
diff --git a/BuildingBlocks/Core/Pagination/IPageRequest.cs b/building-blocks/Core/Pagination/IPageRequest.cs
similarity index 100%
rename from BuildingBlocks/Core/Pagination/IPageRequest.cs
rename to building-blocks/Core/Pagination/IPageRequest.cs
diff --git a/BuildingBlocks/Core/Pagination/PageList.cs b/building-blocks/Core/Pagination/PageList.cs
similarity index 100%
rename from BuildingBlocks/Core/Pagination/PageList.cs
rename to building-blocks/Core/Pagination/PageList.cs
diff --git a/BuildingBlocks/EFCore/AppDbContextBase.cs b/building-blocks/EFCore/AppDbContextBase.cs
similarity index 100%
rename from BuildingBlocks/EFCore/AppDbContextBase.cs
rename to building-blocks/EFCore/AppDbContextBase.cs
diff --git a/BuildingBlocks/EFCore/DesignTimeDbContextFactoryBase.cs b/building-blocks/EFCore/DesignTimeDbContextFactoryBase.cs
similarity index 100%
rename from BuildingBlocks/EFCore/DesignTimeDbContextFactoryBase.cs
rename to building-blocks/EFCore/DesignTimeDbContextFactoryBase.cs
diff --git a/BuildingBlocks/EFCore/EfTxBehavior.cs b/building-blocks/EFCore/EfTxBehavior.cs
similarity index 100%
rename from BuildingBlocks/EFCore/EfTxBehavior.cs
rename to building-blocks/EFCore/EfTxBehavior.cs
diff --git a/BuildingBlocks/EFCore/Extensions.cs b/building-blocks/EFCore/Extensions.cs
similarity index 100%
rename from BuildingBlocks/EFCore/Extensions.cs
rename to building-blocks/EFCore/Extensions.cs
diff --git a/BuildingBlocks/EFCore/IDataSeeder.cs b/building-blocks/EFCore/IDataSeeder.cs
similarity index 100%
rename from BuildingBlocks/EFCore/IDataSeeder.cs
rename to building-blocks/EFCore/IDataSeeder.cs
diff --git a/BuildingBlocks/EFCore/IDbContext.cs b/building-blocks/EFCore/IDbContext.cs
similarity index 100%
rename from BuildingBlocks/EFCore/IDbContext.cs
rename to building-blocks/EFCore/IDbContext.cs
diff --git a/BuildingBlocks/EFCore/ISeedManager.cs b/building-blocks/EFCore/ISeedManager.cs
similarity index 100%
rename from BuildingBlocks/EFCore/ISeedManager.cs
rename to building-blocks/EFCore/ISeedManager.cs
diff --git a/BuildingBlocks/EFCore/PostgresOptions.cs b/building-blocks/EFCore/PostgresOptions.cs
similarity index 100%
rename from BuildingBlocks/EFCore/PostgresOptions.cs
rename to building-blocks/EFCore/PostgresOptions.cs
diff --git a/BuildingBlocks/EFCore/SeedManagers.cs b/building-blocks/EFCore/SeedManagers.cs
similarity index 100%
rename from BuildingBlocks/EFCore/SeedManagers.cs
rename to building-blocks/EFCore/SeedManagers.cs
diff --git a/BuildingBlocks/EventStoreDB/BackgroundWorkers/BackgroundWorker.cs b/building-blocks/EventStoreDB/BackgroundWorkers/BackgroundWorker.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/BackgroundWorkers/BackgroundWorker.cs
rename to building-blocks/EventStoreDB/BackgroundWorkers/BackgroundWorker.cs
diff --git a/BuildingBlocks/EventStoreDB/Config.cs b/building-blocks/EventStoreDB/Config.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Config.cs
rename to building-blocks/EventStoreDB/Config.cs
diff --git a/BuildingBlocks/EventStoreDB/Events/AggregateEventSourcing.cs b/building-blocks/EventStoreDB/Events/AggregateEventSourcing.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Events/AggregateEventSourcing.cs
rename to building-blocks/EventStoreDB/Events/AggregateEventSourcing.cs
diff --git a/BuildingBlocks/EventStoreDB/Events/AggregateStreamExtensions.cs b/building-blocks/EventStoreDB/Events/AggregateStreamExtensions.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Events/AggregateStreamExtensions.cs
rename to building-blocks/EventStoreDB/Events/AggregateStreamExtensions.cs
diff --git a/BuildingBlocks/EventStoreDB/Events/EventTypeMapper.cs b/building-blocks/EventStoreDB/Events/EventTypeMapper.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Events/EventTypeMapper.cs
rename to building-blocks/EventStoreDB/Events/EventTypeMapper.cs
diff --git a/BuildingBlocks/EventStoreDB/Events/IAggregateEventSourcing.cs b/building-blocks/EventStoreDB/Events/IAggregateEventSourcing.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Events/IAggregateEventSourcing.cs
rename to building-blocks/EventStoreDB/Events/IAggregateEventSourcing.cs
diff --git a/BuildingBlocks/EventStoreDB/Events/IEventHandler.cs b/building-blocks/EventStoreDB/Events/IEventHandler.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Events/IEventHandler.cs
rename to building-blocks/EventStoreDB/Events/IEventHandler.cs
diff --git a/BuildingBlocks/EventStoreDB/Events/IExternalEvent.cs b/building-blocks/EventStoreDB/Events/IExternalEvent.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Events/IExternalEvent.cs
rename to building-blocks/EventStoreDB/Events/IExternalEvent.cs
diff --git a/BuildingBlocks/EventStoreDB/Events/IProjection.cs b/building-blocks/EventStoreDB/Events/IProjection.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Events/IProjection.cs
rename to building-blocks/EventStoreDB/Events/IProjection.cs
diff --git a/BuildingBlocks/EventStoreDB/Events/StreamEvent.cs b/building-blocks/EventStoreDB/Events/StreamEvent.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Events/StreamEvent.cs
rename to building-blocks/EventStoreDB/Events/StreamEvent.cs
diff --git a/BuildingBlocks/EventStoreDB/Events/StreamEventExtensions.cs b/building-blocks/EventStoreDB/Events/StreamEventExtensions.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Events/StreamEventExtensions.cs
rename to building-blocks/EventStoreDB/Events/StreamEventExtensions.cs
diff --git a/BuildingBlocks/EventStoreDB/Events/StreamNameMapper.cs b/building-blocks/EventStoreDB/Events/StreamNameMapper.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Events/StreamNameMapper.cs
rename to building-blocks/EventStoreDB/Events/StreamNameMapper.cs
diff --git a/BuildingBlocks/EventStoreDB/Extensions.cs b/building-blocks/EventStoreDB/Extensions.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Extensions.cs
rename to building-blocks/EventStoreDB/Extensions.cs
diff --git a/BuildingBlocks/EventStoreDB/Projections/IProjectionProcessor.cs b/building-blocks/EventStoreDB/Projections/IProjectionProcessor.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Projections/IProjectionProcessor.cs
rename to building-blocks/EventStoreDB/Projections/IProjectionProcessor.cs
diff --git a/BuildingBlocks/EventStoreDB/Projections/IProjectionPublisher.cs b/building-blocks/EventStoreDB/Projections/IProjectionPublisher.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Projections/IProjectionPublisher.cs
rename to building-blocks/EventStoreDB/Projections/IProjectionPublisher.cs
diff --git a/BuildingBlocks/EventStoreDB/Projections/ProjectionPublisher.cs b/building-blocks/EventStoreDB/Projections/ProjectionPublisher.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Projections/ProjectionPublisher.cs
rename to building-blocks/EventStoreDB/Projections/ProjectionPublisher.cs
diff --git a/BuildingBlocks/EventStoreDB/Repository/EventStoreDBRepository.cs b/building-blocks/EventStoreDB/Repository/EventStoreDBRepository.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Repository/EventStoreDBRepository.cs
rename to building-blocks/EventStoreDB/Repository/EventStoreDBRepository.cs
diff --git a/BuildingBlocks/EventStoreDB/Repository/RepositoryExtensions.cs b/building-blocks/EventStoreDB/Repository/RepositoryExtensions.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Repository/RepositoryExtensions.cs
rename to building-blocks/EventStoreDB/Repository/RepositoryExtensions.cs
diff --git a/BuildingBlocks/EventStoreDB/Serialization/EventStoreDBSerializer.cs b/building-blocks/EventStoreDB/Serialization/EventStoreDBSerializer.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Serialization/EventStoreDBSerializer.cs
rename to building-blocks/EventStoreDB/Serialization/EventStoreDBSerializer.cs
diff --git a/BuildingBlocks/EventStoreDB/Serialization/JsonObjectContractProvider.cs b/building-blocks/EventStoreDB/Serialization/JsonObjectContractProvider.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Serialization/JsonObjectContractProvider.cs
rename to building-blocks/EventStoreDB/Serialization/JsonObjectContractProvider.cs
diff --git a/BuildingBlocks/EventStoreDB/Serialization/NonDefaultConstructorContractResolver.cs b/building-blocks/EventStoreDB/Serialization/NonDefaultConstructorContractResolver.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Serialization/NonDefaultConstructorContractResolver.cs
rename to building-blocks/EventStoreDB/Serialization/NonDefaultConstructorContractResolver.cs
diff --git a/BuildingBlocks/EventStoreDB/Serialization/SerializationExtensions.cs b/building-blocks/EventStoreDB/Serialization/SerializationExtensions.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Serialization/SerializationExtensions.cs
rename to building-blocks/EventStoreDB/Serialization/SerializationExtensions.cs
diff --git a/BuildingBlocks/EventStoreDB/Subscriptions/EventStoreDBSubscriptionCheckpointRepository.cs b/building-blocks/EventStoreDB/Subscriptions/EventStoreDBSubscriptionCheckpointRepository.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Subscriptions/EventStoreDBSubscriptionCheckpointRepository.cs
rename to building-blocks/EventStoreDB/Subscriptions/EventStoreDBSubscriptionCheckpointRepository.cs
diff --git a/BuildingBlocks/EventStoreDB/Subscriptions/EventStoreDBSubscriptionToAll.cs b/building-blocks/EventStoreDB/Subscriptions/EventStoreDBSubscriptionToAll.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Subscriptions/EventStoreDBSubscriptionToAll.cs
rename to building-blocks/EventStoreDB/Subscriptions/EventStoreDBSubscriptionToAll.cs
diff --git a/BuildingBlocks/EventStoreDB/Subscriptions/ISubscriptionCheckpointRepository.cs b/building-blocks/EventStoreDB/Subscriptions/ISubscriptionCheckpointRepository.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Subscriptions/ISubscriptionCheckpointRepository.cs
rename to building-blocks/EventStoreDB/Subscriptions/ISubscriptionCheckpointRepository.cs
diff --git a/BuildingBlocks/EventStoreDB/Subscriptions/InMemorySubscriptionCheckpointRepository.cs b/building-blocks/EventStoreDB/Subscriptions/InMemorySubscriptionCheckpointRepository.cs
similarity index 100%
rename from BuildingBlocks/EventStoreDB/Subscriptions/InMemorySubscriptionCheckpointRepository.cs
rename to building-blocks/EventStoreDB/Subscriptions/InMemorySubscriptionCheckpointRepository.cs
diff --git a/BuildingBlocks/Exception/AggregateNotFoundException.cs b/building-blocks/Exception/AggregateNotFoundException.cs
similarity index 100%
rename from BuildingBlocks/Exception/AggregateNotFoundException.cs
rename to building-blocks/Exception/AggregateNotFoundException.cs
diff --git a/BuildingBlocks/Exception/AppException.cs b/building-blocks/Exception/AppException.cs
similarity index 100%
rename from BuildingBlocks/Exception/AppException.cs
rename to building-blocks/Exception/AppException.cs
diff --git a/BuildingBlocks/Exception/BadRequestException.cs b/building-blocks/Exception/BadRequestException.cs
similarity index 100%
rename from BuildingBlocks/Exception/BadRequestException.cs
rename to building-blocks/Exception/BadRequestException.cs
diff --git a/BuildingBlocks/Exception/ConflictException.cs b/building-blocks/Exception/ConflictException.cs
similarity index 100%
rename from BuildingBlocks/Exception/ConflictException.cs
rename to building-blocks/Exception/ConflictException.cs
diff --git a/BuildingBlocks/Exception/CustomException.cs b/building-blocks/Exception/CustomException.cs
similarity index 100%
rename from BuildingBlocks/Exception/CustomException.cs
rename to building-blocks/Exception/CustomException.cs
diff --git a/BuildingBlocks/Exception/GrpcExceptionInterceptor.cs b/building-blocks/Exception/GrpcExceptionInterceptor.cs
similarity index 100%
rename from BuildingBlocks/Exception/GrpcExceptionInterceptor.cs
rename to building-blocks/Exception/GrpcExceptionInterceptor.cs
diff --git a/BuildingBlocks/Exception/InternalServerException.cs b/building-blocks/Exception/InternalServerException.cs
similarity index 100%
rename from BuildingBlocks/Exception/InternalServerException.cs
rename to building-blocks/Exception/InternalServerException.cs
diff --git a/BuildingBlocks/Exception/NotFoundException.cs b/building-blocks/Exception/NotFoundException.cs
similarity index 100%
rename from BuildingBlocks/Exception/NotFoundException.cs
rename to building-blocks/Exception/NotFoundException.cs
diff --git a/BuildingBlocks/Exception/ProblemDetailsWithCode.cs b/building-blocks/Exception/ProblemDetailsWithCode.cs
similarity index 100%
rename from BuildingBlocks/Exception/ProblemDetailsWithCode.cs
rename to building-blocks/Exception/ProblemDetailsWithCode.cs
diff --git a/BuildingBlocks/Exception/ValidationException.cs b/building-blocks/Exception/ValidationException.cs
similarity index 100%
rename from BuildingBlocks/Exception/ValidationException.cs
rename to building-blocks/Exception/ValidationException.cs
diff --git a/BuildingBlocks/HealthCheck/Extensions.cs b/building-blocks/HealthCheck/Extensions.cs
similarity index 100%
rename from BuildingBlocks/HealthCheck/Extensions.cs
rename to building-blocks/HealthCheck/Extensions.cs
diff --git a/BuildingBlocks/HealthCheck/HealthOptions.cs b/building-blocks/HealthCheck/HealthOptions.cs
similarity index 100%
rename from BuildingBlocks/HealthCheck/HealthOptions.cs
rename to building-blocks/HealthCheck/HealthOptions.cs
diff --git a/BuildingBlocks/Jwt/AuthHeaderHandler.cs b/building-blocks/Jwt/AuthHeaderHandler.cs
similarity index 100%
rename from BuildingBlocks/Jwt/AuthHeaderHandler.cs
rename to building-blocks/Jwt/AuthHeaderHandler.cs
diff --git a/BuildingBlocks/Jwt/JwtExtensions.cs b/building-blocks/Jwt/JwtExtensions.cs
similarity index 100%
rename from BuildingBlocks/Jwt/JwtExtensions.cs
rename to building-blocks/Jwt/JwtExtensions.cs
diff --git a/BuildingBlocks/Logging/Extensions.cs b/building-blocks/Logging/Extensions.cs
similarity index 100%
rename from BuildingBlocks/Logging/Extensions.cs
rename to building-blocks/Logging/Extensions.cs
diff --git a/BuildingBlocks/Logging/FileOptions.cs b/building-blocks/Logging/FileOptions.cs
similarity index 100%
rename from BuildingBlocks/Logging/FileOptions.cs
rename to building-blocks/Logging/FileOptions.cs
diff --git a/BuildingBlocks/Logging/LogEnrichHelper.cs b/building-blocks/Logging/LogEnrichHelper.cs
similarity index 100%
rename from BuildingBlocks/Logging/LogEnrichHelper.cs
rename to building-blocks/Logging/LogEnrichHelper.cs
diff --git a/BuildingBlocks/Logging/LogOptions.cs b/building-blocks/Logging/LogOptions.cs
similarity index 100%
rename from BuildingBlocks/Logging/LogOptions.cs
rename to building-blocks/Logging/LogOptions.cs
diff --git a/BuildingBlocks/Logging/LoggingBehavior.cs b/building-blocks/Logging/LoggingBehavior.cs
similarity index 100%
rename from BuildingBlocks/Logging/LoggingBehavior.cs
rename to building-blocks/Logging/LoggingBehavior.cs
diff --git a/BuildingBlocks/Mapster/Extensions.cs b/building-blocks/Mapster/Extensions.cs
similarity index 100%
rename from BuildingBlocks/Mapster/Extensions.cs
rename to building-blocks/Mapster/Extensions.cs
diff --git a/BuildingBlocks/MassTransit/ConsumeFilter.cs b/building-blocks/MassTransit/ConsumeFilter.cs
similarity index 100%
rename from BuildingBlocks/MassTransit/ConsumeFilter.cs
rename to building-blocks/MassTransit/ConsumeFilter.cs
diff --git a/BuildingBlocks/MassTransit/Extensions.cs b/building-blocks/MassTransit/Extensions.cs
similarity index 100%
rename from BuildingBlocks/MassTransit/Extensions.cs
rename to building-blocks/MassTransit/Extensions.cs
diff --git a/BuildingBlocks/MassTransit/RabbitMqOptions.cs b/building-blocks/MassTransit/RabbitMqOptions.cs
similarity index 100%
rename from BuildingBlocks/MassTransit/RabbitMqOptions.cs
rename to building-blocks/MassTransit/RabbitMqOptions.cs
diff --git a/BuildingBlocks/Mongo/Extensions.cs b/building-blocks/Mongo/Extensions.cs
similarity index 100%
rename from BuildingBlocks/Mongo/Extensions.cs
rename to building-blocks/Mongo/Extensions.cs
diff --git a/BuildingBlocks/Mongo/IMongoDbContext.cs b/building-blocks/Mongo/IMongoDbContext.cs
similarity index 100%
rename from BuildingBlocks/Mongo/IMongoDbContext.cs
rename to building-blocks/Mongo/IMongoDbContext.cs
diff --git a/BuildingBlocks/Mongo/IMongoRepository.cs b/building-blocks/Mongo/IMongoRepository.cs
similarity index 100%
rename from BuildingBlocks/Mongo/IMongoRepository.cs
rename to building-blocks/Mongo/IMongoRepository.cs
diff --git a/BuildingBlocks/Mongo/IMongoUnitOfWork.cs b/building-blocks/Mongo/IMongoUnitOfWork.cs
similarity index 100%
rename from BuildingBlocks/Mongo/IMongoUnitOfWork.cs
rename to building-blocks/Mongo/IMongoUnitOfWork.cs
diff --git a/BuildingBlocks/Mongo/IRepository.cs b/building-blocks/Mongo/IRepository.cs
similarity index 100%
rename from BuildingBlocks/Mongo/IRepository.cs
rename to building-blocks/Mongo/IRepository.cs
diff --git a/BuildingBlocks/Mongo/ITransactionAble.cs b/building-blocks/Mongo/ITransactionAble.cs
similarity index 100%
rename from BuildingBlocks/Mongo/ITransactionAble.cs
rename to building-blocks/Mongo/ITransactionAble.cs
diff --git a/BuildingBlocks/Mongo/IUnitOfWork.cs b/building-blocks/Mongo/IUnitOfWork.cs
similarity index 100%
rename from BuildingBlocks/Mongo/IUnitOfWork.cs
rename to building-blocks/Mongo/IUnitOfWork.cs
diff --git a/BuildingBlocks/Mongo/ImmutablePocoConvention.cs b/building-blocks/Mongo/ImmutablePocoConvention.cs
similarity index 100%
rename from BuildingBlocks/Mongo/ImmutablePocoConvention.cs
rename to building-blocks/Mongo/ImmutablePocoConvention.cs
diff --git a/BuildingBlocks/Mongo/MicroBootstrap.Persistence.Mongo.csproj b/building-blocks/Mongo/MicroBootstrap.Persistence.Mongo.csproj
similarity index 100%
rename from BuildingBlocks/Mongo/MicroBootstrap.Persistence.Mongo.csproj
rename to building-blocks/Mongo/MicroBootstrap.Persistence.Mongo.csproj
diff --git a/BuildingBlocks/Mongo/MongoDbContext.cs b/building-blocks/Mongo/MongoDbContext.cs
similarity index 100%
rename from BuildingBlocks/Mongo/MongoDbContext.cs
rename to building-blocks/Mongo/MongoDbContext.cs
diff --git a/BuildingBlocks/Mongo/MongoOptions.cs b/building-blocks/Mongo/MongoOptions.cs
similarity index 100%
rename from BuildingBlocks/Mongo/MongoOptions.cs
rename to building-blocks/Mongo/MongoOptions.cs
diff --git a/BuildingBlocks/Mongo/MongoRepository.cs b/building-blocks/Mongo/MongoRepository.cs
similarity index 100%
rename from BuildingBlocks/Mongo/MongoRepository.cs
rename to building-blocks/Mongo/MongoRepository.cs
diff --git a/BuildingBlocks/Mongo/MongoUnitOfWork.cs b/building-blocks/Mongo/MongoUnitOfWork.cs
similarity index 100%
rename from BuildingBlocks/Mongo/MongoUnitOfWork.cs
rename to building-blocks/Mongo/MongoUnitOfWork.cs
diff --git a/BuildingBlocks/OpenApi/Extensions.cs b/building-blocks/OpenApi/Extensions.cs
similarity index 100%
rename from BuildingBlocks/OpenApi/Extensions.cs
rename to building-blocks/OpenApi/Extensions.cs
diff --git a/BuildingBlocks/OpenApi/SecuritySchemeDocumentTransformer.cs b/building-blocks/OpenApi/SecuritySchemeDocumentTransformer.cs
similarity index 100%
rename from BuildingBlocks/OpenApi/SecuritySchemeDocumentTransformer.cs
rename to building-blocks/OpenApi/SecuritySchemeDocumentTransformer.cs
diff --git a/BuildingBlocks/OpenTelemetryCollector/ActivityExtensions.cs b/building-blocks/OpenTelemetryCollector/ActivityExtensions.cs
similarity index 100%
rename from BuildingBlocks/OpenTelemetryCollector/ActivityExtensions.cs
rename to building-blocks/OpenTelemetryCollector/ActivityExtensions.cs
diff --git a/BuildingBlocks/OpenTelemetryCollector/ActivityInfo.cs b/building-blocks/OpenTelemetryCollector/ActivityInfo.cs
similarity index 100%
rename from BuildingBlocks/OpenTelemetryCollector/ActivityInfo.cs
rename to building-blocks/OpenTelemetryCollector/ActivityInfo.cs
diff --git a/BuildingBlocks/OpenTelemetryCollector/Behaviors/ObservabilityPipelineBehavior.cs b/building-blocks/OpenTelemetryCollector/Behaviors/ObservabilityPipelineBehavior.cs
similarity index 100%
rename from BuildingBlocks/OpenTelemetryCollector/Behaviors/ObservabilityPipelineBehavior.cs
rename to building-blocks/OpenTelemetryCollector/Behaviors/ObservabilityPipelineBehavior.cs
diff --git a/BuildingBlocks/OpenTelemetryCollector/CoreDiagnostics/Commands/CommandHandlerActivity.cs b/building-blocks/OpenTelemetryCollector/CoreDiagnostics/Commands/CommandHandlerActivity.cs
similarity index 100%
rename from BuildingBlocks/OpenTelemetryCollector/CoreDiagnostics/Commands/CommandHandlerActivity.cs
rename to building-blocks/OpenTelemetryCollector/CoreDiagnostics/Commands/CommandHandlerActivity.cs
diff --git a/BuildingBlocks/OpenTelemetryCollector/CoreDiagnostics/Commands/CommandHandlerMetrics.cs b/building-blocks/OpenTelemetryCollector/CoreDiagnostics/Commands/CommandHandlerMetrics.cs
similarity index 100%
rename from BuildingBlocks/OpenTelemetryCollector/CoreDiagnostics/Commands/CommandHandlerMetrics.cs
rename to building-blocks/OpenTelemetryCollector/CoreDiagnostics/Commands/CommandHandlerMetrics.cs
diff --git a/BuildingBlocks/OpenTelemetryCollector/CoreDiagnostics/Query/QueryHandlerActivity.cs b/building-blocks/OpenTelemetryCollector/CoreDiagnostics/Query/QueryHandlerActivity.cs
similarity index 100%
rename from BuildingBlocks/OpenTelemetryCollector/CoreDiagnostics/Query/QueryHandlerActivity.cs
rename to building-blocks/OpenTelemetryCollector/CoreDiagnostics/Query/QueryHandlerActivity.cs
diff --git a/BuildingBlocks/OpenTelemetryCollector/CoreDiagnostics/Query/QueryHandlerMetrics.cs b/building-blocks/OpenTelemetryCollector/CoreDiagnostics/Query/QueryHandlerMetrics.cs
similarity index 100%
rename from BuildingBlocks/OpenTelemetryCollector/CoreDiagnostics/Query/QueryHandlerMetrics.cs
rename to building-blocks/OpenTelemetryCollector/CoreDiagnostics/Query/QueryHandlerMetrics.cs
diff --git a/BuildingBlocks/OpenTelemetryCollector/CreateActivityInfo.cs b/building-blocks/OpenTelemetryCollector/CreateActivityInfo.cs
similarity index 100%
rename from BuildingBlocks/OpenTelemetryCollector/CreateActivityInfo.cs
rename to building-blocks/OpenTelemetryCollector/CreateActivityInfo.cs
diff --git a/BuildingBlocks/OpenTelemetryCollector/DiagnosticsProvider/CustomeDiagnosticsProvider.cs b/building-blocks/OpenTelemetryCollector/DiagnosticsProvider/CustomeDiagnosticsProvider.cs
similarity index 100%
rename from BuildingBlocks/OpenTelemetryCollector/DiagnosticsProvider/CustomeDiagnosticsProvider.cs
rename to building-blocks/OpenTelemetryCollector/DiagnosticsProvider/CustomeDiagnosticsProvider.cs
diff --git a/BuildingBlocks/OpenTelemetryCollector/DiagnosticsProvider/IDiagnosticsProvider.cs b/building-blocks/OpenTelemetryCollector/DiagnosticsProvider/IDiagnosticsProvider.cs
similarity index 100%
rename from BuildingBlocks/OpenTelemetryCollector/DiagnosticsProvider/IDiagnosticsProvider.cs
rename to building-blocks/OpenTelemetryCollector/DiagnosticsProvider/IDiagnosticsProvider.cs
diff --git a/BuildingBlocks/OpenTelemetryCollector/Extensions.cs b/building-blocks/OpenTelemetryCollector/Extensions.cs
similarity index 100%
rename from BuildingBlocks/OpenTelemetryCollector/Extensions.cs
rename to building-blocks/OpenTelemetryCollector/Extensions.cs
diff --git a/BuildingBlocks/OpenTelemetryCollector/ObservabilityConstant.cs b/building-blocks/OpenTelemetryCollector/ObservabilityConstant.cs
similarity index 100%
rename from BuildingBlocks/OpenTelemetryCollector/ObservabilityConstant.cs
rename to building-blocks/OpenTelemetryCollector/ObservabilityConstant.cs
diff --git a/BuildingBlocks/OpenTelemetryCollector/ObservabilityOptions.cs b/building-blocks/OpenTelemetryCollector/ObservabilityOptions.cs
similarity index 100%
rename from BuildingBlocks/OpenTelemetryCollector/ObservabilityOptions.cs
rename to building-blocks/OpenTelemetryCollector/ObservabilityOptions.cs
diff --git a/BuildingBlocks/OpenTelemetryCollector/TelemetryTags.cs b/building-blocks/OpenTelemetryCollector/TelemetryTags.cs
similarity index 100%
rename from BuildingBlocks/OpenTelemetryCollector/TelemetryTags.cs
rename to building-blocks/OpenTelemetryCollector/TelemetryTags.cs
diff --git a/BuildingBlocks/PersistMessageProcessor/Extensions.cs b/building-blocks/PersistMessageProcessor/Extensions.cs
similarity index 100%
rename from BuildingBlocks/PersistMessageProcessor/Extensions.cs
rename to building-blocks/PersistMessageProcessor/Extensions.cs
diff --git a/BuildingBlocks/PersistMessageProcessor/IPersistMessageDbContext.cs b/building-blocks/PersistMessageProcessor/IPersistMessageDbContext.cs
similarity index 100%
rename from BuildingBlocks/PersistMessageProcessor/IPersistMessageDbContext.cs
rename to building-blocks/PersistMessageProcessor/IPersistMessageDbContext.cs
diff --git a/BuildingBlocks/PersistMessageProcessor/IPersistMessageProcessor.cs b/building-blocks/PersistMessageProcessor/IPersistMessageProcessor.cs
similarity index 100%
rename from BuildingBlocks/PersistMessageProcessor/IPersistMessageProcessor.cs
rename to building-blocks/PersistMessageProcessor/IPersistMessageProcessor.cs
diff --git a/BuildingBlocks/PersistMessageProcessor/MessageDeliveryType.cs b/building-blocks/PersistMessageProcessor/MessageDeliveryType.cs
similarity index 100%
rename from BuildingBlocks/PersistMessageProcessor/MessageDeliveryType.cs
rename to building-blocks/PersistMessageProcessor/MessageDeliveryType.cs
diff --git a/BuildingBlocks/PersistMessageProcessor/MessageStatus.cs b/building-blocks/PersistMessageProcessor/MessageStatus.cs
similarity index 100%
rename from BuildingBlocks/PersistMessageProcessor/MessageStatus.cs
rename to building-blocks/PersistMessageProcessor/MessageStatus.cs
diff --git a/BuildingBlocks/PersistMessageProcessor/PersistMessage.cs b/building-blocks/PersistMessageProcessor/PersistMessage.cs
similarity index 100%
rename from BuildingBlocks/PersistMessageProcessor/PersistMessage.cs
rename to building-blocks/PersistMessageProcessor/PersistMessage.cs
diff --git a/BuildingBlocks/PersistMessageProcessor/PersistMessageBackgroundService.cs b/building-blocks/PersistMessageProcessor/PersistMessageBackgroundService.cs
similarity index 100%
rename from BuildingBlocks/PersistMessageProcessor/PersistMessageBackgroundService.cs
rename to building-blocks/PersistMessageProcessor/PersistMessageBackgroundService.cs
diff --git a/BuildingBlocks/PersistMessageProcessor/PersistMessageDbContext.cs b/building-blocks/PersistMessageProcessor/PersistMessageDbContext.cs
similarity index 100%
rename from BuildingBlocks/PersistMessageProcessor/PersistMessageDbContext.cs
rename to building-blocks/PersistMessageProcessor/PersistMessageDbContext.cs
diff --git a/BuildingBlocks/PersistMessageProcessor/PersistMessageOptions.cs b/building-blocks/PersistMessageProcessor/PersistMessageOptions.cs
similarity index 100%
rename from BuildingBlocks/PersistMessageProcessor/PersistMessageOptions.cs
rename to building-blocks/PersistMessageProcessor/PersistMessageOptions.cs
diff --git a/BuildingBlocks/PersistMessageProcessor/PersistMessageProcessor.cs b/building-blocks/PersistMessageProcessor/PersistMessageProcessor.cs
similarity index 100%
rename from BuildingBlocks/PersistMessageProcessor/PersistMessageProcessor.cs
rename to building-blocks/PersistMessageProcessor/PersistMessageProcessor.cs
diff --git a/BuildingBlocks/Polly/CircuitBreakerOptions.cs b/building-blocks/Polly/CircuitBreakerOptions.cs
similarity index 100%
rename from BuildingBlocks/Polly/CircuitBreakerOptions.cs
rename to building-blocks/Polly/CircuitBreakerOptions.cs
diff --git a/BuildingBlocks/Polly/Extensions.cs b/building-blocks/Polly/Extensions.cs
similarity index 100%
rename from BuildingBlocks/Polly/Extensions.cs
rename to building-blocks/Polly/Extensions.cs
diff --git a/BuildingBlocks/Polly/GrpcCircuitBreaker.cs b/building-blocks/Polly/GrpcCircuitBreaker.cs
similarity index 100%
rename from BuildingBlocks/Polly/GrpcCircuitBreaker.cs
rename to building-blocks/Polly/GrpcCircuitBreaker.cs
diff --git a/BuildingBlocks/Polly/GrpcRetry.cs b/building-blocks/Polly/GrpcRetry.cs
similarity index 100%
rename from BuildingBlocks/Polly/GrpcRetry.cs
rename to building-blocks/Polly/GrpcRetry.cs
diff --git a/BuildingBlocks/Polly/HttpClientCircuitBreaker.cs b/building-blocks/Polly/HttpClientCircuitBreaker.cs
similarity index 100%
rename from BuildingBlocks/Polly/HttpClientCircuitBreaker.cs
rename to building-blocks/Polly/HttpClientCircuitBreaker.cs
diff --git a/BuildingBlocks/Polly/HttpClientRetry.cs b/building-blocks/Polly/HttpClientRetry.cs
similarity index 100%
rename from BuildingBlocks/Polly/HttpClientRetry.cs
rename to building-blocks/Polly/HttpClientRetry.cs
diff --git a/BuildingBlocks/Polly/PolicyOptions.cs b/building-blocks/Polly/PolicyOptions.cs
similarity index 100%
rename from BuildingBlocks/Polly/PolicyOptions.cs
rename to building-blocks/Polly/PolicyOptions.cs
diff --git a/BuildingBlocks/Polly/RetryOptions.cs b/building-blocks/Polly/RetryOptions.cs
similarity index 100%
rename from BuildingBlocks/Polly/RetryOptions.cs
rename to building-blocks/Polly/RetryOptions.cs
diff --git a/BuildingBlocks/ProblemDetails/Extensions.cs b/building-blocks/ProblemDetails/Extensions.cs
similarity index 100%
rename from BuildingBlocks/ProblemDetails/Extensions.cs
rename to building-blocks/ProblemDetails/Extensions.cs
diff --git a/BuildingBlocks/TestBase/TestBase.cs b/building-blocks/TestBase/TestBase.cs
similarity index 100%
rename from BuildingBlocks/TestBase/TestBase.cs
rename to building-blocks/TestBase/TestBase.cs
diff --git a/BuildingBlocks/TestBase/TestContainers.cs b/building-blocks/TestBase/TestContainers.cs
similarity index 100%
rename from BuildingBlocks/TestBase/TestContainers.cs
rename to building-blocks/TestBase/TestContainers.cs
diff --git a/BuildingBlocks/Utils/NoSynchronizationContextScope.cs b/building-blocks/Utils/NoSynchronizationContextScope.cs
similarity index 100%
rename from BuildingBlocks/Utils/NoSynchronizationContextScope.cs
rename to building-blocks/Utils/NoSynchronizationContextScope.cs
diff --git a/BuildingBlocks/Utils/ServiceLocator.cs b/building-blocks/Utils/ServiceLocator.cs
similarity index 100%
rename from BuildingBlocks/Utils/ServiceLocator.cs
rename to building-blocks/Utils/ServiceLocator.cs
diff --git a/BuildingBlocks/Utils/TypeProvider.cs b/building-blocks/Utils/TypeProvider.cs
similarity index 100%
rename from BuildingBlocks/Utils/TypeProvider.cs
rename to building-blocks/Utils/TypeProvider.cs
diff --git a/BuildingBlocks/Validation/Extensions.cs b/building-blocks/Validation/Extensions.cs
similarity index 100%
rename from BuildingBlocks/Validation/Extensions.cs
rename to building-blocks/Validation/Extensions.cs
diff --git a/BuildingBlocks/Validation/ValidationBehavior.cs b/building-blocks/Validation/ValidationBehavior.cs
similarity index 100%
rename from BuildingBlocks/Validation/ValidationBehavior.cs
rename to building-blocks/Validation/ValidationBehavior.cs
diff --git a/BuildingBlocks/Validation/ValidationError.cs b/building-blocks/Validation/ValidationError.cs
similarity index 100%
rename from BuildingBlocks/Validation/ValidationError.cs
rename to building-blocks/Validation/ValidationError.cs
diff --git a/BuildingBlocks/Validation/ValidationResultModel.cs b/building-blocks/Validation/ValidationResultModel.cs
similarity index 100%
rename from BuildingBlocks/Validation/ValidationResultModel.cs
rename to building-blocks/Validation/ValidationResultModel.cs
diff --git a/BuildingBlocks/Web/ApiVersioningExtensions.cs b/building-blocks/Web/ApiVersioningExtensions.cs
similarity index 100%
rename from BuildingBlocks/Web/ApiVersioningExtensions.cs
rename to building-blocks/Web/ApiVersioningExtensions.cs
diff --git a/BuildingBlocks/Web/AppOptions.cs b/building-blocks/Web/AppOptions.cs
similarity index 100%
rename from BuildingBlocks/Web/AppOptions.cs
rename to building-blocks/Web/AppOptions.cs
diff --git a/BuildingBlocks/Web/BaseController.cs b/building-blocks/Web/BaseController.cs
similarity index 100%
rename from BuildingBlocks/Web/BaseController.cs
rename to building-blocks/Web/BaseController.cs
diff --git a/BuildingBlocks/Web/ConfigurationExtensions.cs b/building-blocks/Web/ConfigurationExtensions.cs
similarity index 100%
rename from BuildingBlocks/Web/ConfigurationExtensions.cs
rename to building-blocks/Web/ConfigurationExtensions.cs
diff --git a/BuildingBlocks/Web/ConfigurationHelper.cs b/building-blocks/Web/ConfigurationHelper.cs
similarity index 100%
rename from BuildingBlocks/Web/ConfigurationHelper.cs
rename to building-blocks/Web/ConfigurationHelper.cs
diff --git a/BuildingBlocks/Web/CorrelationExtensions.cs b/building-blocks/Web/CorrelationExtensions.cs
similarity index 100%
rename from BuildingBlocks/Web/CorrelationExtensions.cs
rename to building-blocks/Web/CorrelationExtensions.cs
diff --git a/BuildingBlocks/Web/CurrentUserProvider.cs b/building-blocks/Web/CurrentUserProvider.cs
similarity index 100%
rename from BuildingBlocks/Web/CurrentUserProvider.cs
rename to building-blocks/Web/CurrentUserProvider.cs
diff --git a/BuildingBlocks/Web/EndpointConfig.cs b/building-blocks/Web/EndpointConfig.cs
similarity index 100%
rename from BuildingBlocks/Web/EndpointConfig.cs
rename to building-blocks/Web/EndpointConfig.cs
diff --git a/BuildingBlocks/Web/IMinimalEndpoint.cs b/building-blocks/Web/IMinimalEndpoint.cs
similarity index 100%
rename from BuildingBlocks/Web/IMinimalEndpoint.cs
rename to building-blocks/Web/IMinimalEndpoint.cs
diff --git a/BuildingBlocks/Web/MinimalApiExtensions.cs b/building-blocks/Web/MinimalApiExtensions.cs
similarity index 100%
rename from BuildingBlocks/Web/MinimalApiExtensions.cs
rename to building-blocks/Web/MinimalApiExtensions.cs
diff --git a/BuildingBlocks/Web/ServiceCollectionExtensions.cs b/building-blocks/Web/ServiceCollectionExtensions.cs
similarity index 100%
rename from BuildingBlocks/Web/ServiceCollectionExtensions.cs
rename to building-blocks/Web/ServiceCollectionExtensions.cs
diff --git a/BuildingBlocks/Web/ServiceProviderExtensions.cs b/building-blocks/Web/ServiceProviderExtensions.cs
similarity index 100%
rename from BuildingBlocks/Web/ServiceProviderExtensions.cs
rename to building-blocks/Web/ServiceProviderExtensions.cs
diff --git a/BuildingBlocks/Web/SlugifyParameterTransformer.cs b/building-blocks/Web/SlugifyParameterTransformer.cs
similarity index 100%
rename from BuildingBlocks/Web/SlugifyParameterTransformer.cs
rename to building-blocks/Web/SlugifyParameterTransformer.cs
diff --git a/legacy-to-modern-architecture-styles.sln b/legacy-to-modern-architecture-styles.sln
index 682547c..d7d3b9e 100644
--- a/legacy-to-modern-architecture-styles.sln
+++ b/legacy-to-modern-architecture-styles.sln
@@ -3,15 +3,13 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BuildingBlocks", "BuildingBlocks", "{B85B39B5-B341-4117-8626-C5DD4F375569}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "building-blocks", "building-blocks", "{B85B39B5-B341-4117-8626-C5DD4F375569}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Monolith", "Monolith", "{96913068-5EFE-4D13-8B00-924AFED16439}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "monolith", "monolith", "{96913068-5EFE-4D13-8B00-924AFED16439}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ModularMonolith", "ModularMonolith", "{F1BEC66C-B321-45D8-95C1-8DCD4743275D}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modular-monolith", "modular-monolith", "{F1BEC66C-B321-45D8-95C1-8DCD4743275D}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microservices", "Microservices", "{33F5E6F6-FACB-4D34-8E48-B80E0497D239}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildingBlocks", "BuildingBlocks\BuildingBlocks.csproj", "{BBB3F565-9EDF-45B7-B547-60AA4609E453}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "microservices", "microservices", "{33F5E6F6-FACB-4D34-8E48-B80E0497D239}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{57366225-A26A-4715-A690-DA641B0C0450}"
EndProject
@@ -73,6 +71,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Integration.Test", "3-Micro
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Integration.Test", "3-Microservices-Architecture-Style\src\Services\Passenger\tests\IntegrationTest\Integration.Test.csproj", "{6D17EFCC-63DB-4E51-8073-25D5E59B2170}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildingBlocks", "building-blocks\BuildingBlocks.csproj", "{5ED78466-4114-48ED-9A6E-02143984E7A1}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -82,7 +82,6 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {BBB3F565-9EDF-45B7-B547-60AA4609E453} = {B85B39B5-B341-4117-8626-C5DD4F375569}
{57366225-A26A-4715-A690-DA641B0C0450} = {33F5E6F6-FACB-4D34-8E48-B80E0497D239}
{39BAB0A0-3C16-49B1-B817-9EC5C600BF5E} = {33F5E6F6-FACB-4D34-8E48-B80E0497D239}
{570274DD-E84A-4F22-9079-D60B59EC9ED2} = {F1BEC66C-B321-45D8-95C1-8DCD4743275D}
@@ -113,12 +112,9 @@ Global
{FDA41108-8194-49B2-8F78-9F8AECABB7BC} = {7D81CAA6-6DEF-43C1-AE1B-D0F0B7B09CE7}
{B6D11E8B-CAAE-4452-B3AE-A49DA7E68FE0} = {3FD37B50-3C7D-49E9-9456-A3E82675227D}
{6D17EFCC-63DB-4E51-8073-25D5E59B2170} = {D2F19D7F-A9DA-47D2-A445-F9ED8D4479C1}
+ {5ED78466-4114-48ED-9A6E-02143984E7A1} = {B85B39B5-B341-4117-8626-C5DD4F375569}
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {BBB3F565-9EDF-45B7-B547-60AA4609E453}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {BBB3F565-9EDF-45B7-B547-60AA4609E453}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {BBB3F565-9EDF-45B7-B547-60AA4609E453}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {BBB3F565-9EDF-45B7-B547-60AA4609E453}.Release|Any CPU.Build.0 = Release|Any CPU
{6538BDF3-A741-46E9-8988-C859ABB2FBB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6538BDF3-A741-46E9-8988-C859ABB2FBB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6538BDF3-A741-46E9-8988-C859ABB2FBB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -179,5 +175,9 @@ Global
{6D17EFCC-63DB-4E51-8073-25D5E59B2170}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6D17EFCC-63DB-4E51-8073-25D5E59B2170}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6D17EFCC-63DB-4E51-8073-25D5E59B2170}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5ED78466-4114-48ED-9A6E-02143984E7A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5ED78466-4114-48ED-9A6E-02143984E7A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5ED78466-4114-48ED-9A6E-02143984E7A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5ED78466-4114-48ED-9A6E-02143984E7A1}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal