{"id":30177555,"url":"https://github.com/cristofima/banksystemmicroservices","last_synced_at":"2026-05-16T22:02:04.839Z","repository":{"id":302356236,"uuid":"1011469643","full_name":"cristofima/BankSystemMicroservices","owner":"cristofima","description":"Bank System Microservices developed in .NET following Clean Architecture, Domain Driven Desing and Event Driven Architecture","archived":false,"fork":false,"pushed_at":"2025-09-29T18:31:50.000Z","size":958,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-29T18:37:24.721Z","etag":null,"topics":["azure-pipelines","clean-architecture","clean-code","domain-driven-design","dotnet","entity-framework-core","event-driven-architecture","integration-tests","masstransit","microservices","outbox-pattern","scalar","sonar-qube","test-containers","unit-testing","yarp"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cristofima.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-30T21:43:52.000Z","updated_at":"2025-09-26T23:22:19.000Z","dependencies_parsed_at":"2025-07-17T07:39:03.883Z","dependency_job_id":"3ce694c1-817f-4a55-9910-628e7160b5e2","html_url":"https://github.com/cristofima/BankSystemMicroservices","commit_stats":null,"previous_names":["cristofima/banksystemmicroservices"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cristofima/BankSystemMicroservices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristofima%2FBankSystemMicroservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristofima%2FBankSystemMicroservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristofima%2FBankSystemMicroservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristofima%2FBankSystemMicroservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cristofima","download_url":"https://codeload.github.com/cristofima/BankSystemMicroservices/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristofima%2FBankSystemMicroservices/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33120450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T18:38:32.183Z","status":"ssl_error","status_checked_at":"2026-05-16T18:38:29.903Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure-pipelines","clean-architecture","clean-code","domain-driven-design","dotnet","entity-framework-core","event-driven-architecture","integration-tests","masstransit","microservices","outbox-pattern","scalar","sonar-qube","test-containers","unit-testing","yarp"],"created_at":"2025-08-12T04:37:23.979Z","updated_at":"2026-05-16T22:02:04.833Z","avatar_url":"https://github.com/cristofima.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bank System Microservices\n\n\u003c!-- Sonar Qube Badges --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ca href=\"https://sonarcloud.io/summary/new_code?id=cristofima_BankSystemMicroservices\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=cristofima_BankSystemMicroservices\u0026metric=alert_status\" alt=\"Quality Gate Status\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://sonarcloud.io/summary/new_code?id=cristofima_BankSystemMicroservices\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=cristofima_BankSystemMicroservices\u0026metric=bugs\" alt=\"Bugs\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://sonarcloud.io/summary/new_code?id=cristofima_BankSystemMicroservices\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=cristofima_BankSystemMicroservices\u0026metric=code_smells\" alt=\"Code Smells\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://sonarcloud.io/summary/new_code?id=cristofima_BankSystemMicroservices\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=cristofima_BankSystemMicroservices\u0026metric=coverage\" alt=\"Coverage\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://sonarcloud.io/summary/new_code?id=cristofima_BankSystemMicroservices\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=cristofima_BankSystemMicroservices\u0026metric=duplicated_lines_density\" alt=\"Duplicated Lines (%)\"/\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ca href=\"https://sonarcloud.io/summary/new_code?id=cristofima_BankSystemMicroservices\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=cristofima_BankSystemMicroservices\u0026metric=ncloc\" alt=\"Lines of Code\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://sonarcloud.io/summary/new_code?id=cristofima_BankSystemMicroservices\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=cristofima_BankSystemMicroservices\u0026metric=reliability_rating\" alt=\"Reliability Rating\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://sonarcloud.io/summary/new_code?id=cristofima_BankSystemMicroservices\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=cristofima_BankSystemMicroservices\u0026metric=security_rating\" alt=\"Security Rating\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://sonarcloud.io/summary/new_code?id=cristofima_BankSystemMicroservices\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=cristofima_BankSystemMicroservices\u0026metric=sqale_index\" alt=\"Technical Debt\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://sonarcloud.io/summary/new_code?id=cristofima_BankSystemMicroservices\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=cristofima_BankSystemMicroservices\u0026metric=sqale_rating\" alt=\"Maintainability Rating\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://sonarcloud.io/summary/new_code?id=cristofima_BankSystemMicroservices\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=cristofima_BankSystemMicroservices\u0026metric=vulnerabilities\" alt=\"Vulnerabilities\"/\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\nA modern, cloud-native banking system built with .NET 9 microservices architecture, designed for Azure deployment with Clean Architecture, CQRS, and Event-Driven Architecture patterns.\n\n## 🏗️ Architecture Overview\n\nThis system implements a distributed banking platform using microservices that communicate through Azure Service Bus events, following Domain-Driven Design (DDD) principles and the CQRS pattern for optimal scalability and maintainability.\n\n### Core Microservices\n\n- **🔐 Security Service**: Handles authentication, authorization, and user management\n- **🏦 Account Service**: Manages customer accounts, balances, and account operations\n- **💸 Transaction Service**: Processes financial transactions (deposits, withdrawals) - Write operations\n- **📊 Movement Service**: Provides transaction history and reporting - Read operations\n- **🔔 Notification Service**: Manages multi-channel notifications and alerts\n- **📈 Reporting Service**: Handles analytics, reports, and business intelligence\n\n### Architecture Patterns\n\n- **Clean Architecture**: Clear separation of concerns across layers\n- **CQRS (Command Query Responsibility Segregation)**: Separate read and write operations\n- **Event-Driven Architecture**: Asynchronous communication via Azure Service Bus\n- **Domain-Driven Design**: Rich domain models with business logic encapsulation\n- **Microservices**: Independently deployable and scalable services\n\n## 🚀 Technology Stack\n\n### Backend\n\n- **.NET 9**: Latest framework with improved performance and features\n- **ASP.NET Core**: Web API framework\n- **Entity Framework Core**: ORM for data access\n- **MediatR**: CQRS and Mediator pattern implementation\n- **FluentValidation**: Input validation\n- **AutoMapper**: Object-to-object mapping\n- **Serilog**: Structured logging\n\n### Azure Services\n\n- **Azure Service Bus**: Message broker for event-driven communication\n- **Azure SQL Database**: Primary database for transactions and accounts\n- **Azure Cosmos DB**: Document database for movement history (read-optimized)\n- **Azure Key Vault**: Secrets and configuration management\n- **Azure Application Insights**: Monitoring and telemetry\n- **Azure API Management**: API Gateway and management\n- **Azure Container Apps**: Container hosting platform\n\n### Development Tools\n\n- **Docker**: Containerization\n- **.NET Aspire**: Local development orchestration and monitoring _(Local Development Only)_\n- **YARP**: Reverse proxy for API Gateway _(Local Development Only)_\n- **Terraform/Bicep**: Infrastructure as Code\n- **Azure DevOps**: CI/CD pipelines\n- **xUnit**: Unit testing framework\n- **FluentAssertions**: Assertion library\n\n### Environment Architecture\n\n#### Local Development Environment\n\n- **API Gateway**: YARP-based reverse proxy for service routing\n- **.NET Aspire Dashboard**: Local orchestration and monitoring\n- **ServiceDefaults**: Aspire-based service configuration and telemetry\n\n#### Production Environment (Azure)\n\n- **Azure API Management**: Replaces local API Gateway for enterprise-grade routing, policies, and security\n- **Azure Application Insights Dashboard**: Replaces .NET Aspire Dashboard for production monitoring\n- **Azure Service Discovery**: Native Azure service discovery and load balancing\n\n## 🏛️ System Architecture\n\n```mermaid\ngraph TB\n    %% Client Layer\n    Client[📱 Client App\u003cbr/\u003eAngular]\n\n    %% Gateway Layer\n    Gateway[🌐 API Management\u003cbr/\u003eGateway]\n\n    %% Core Services Layer\n    Security[🔐 Security\u003cbr/\u003eService]\n    Account[🏦 Account\u003cbr/\u003eService]\n    Transaction[💸 Transaction\u003cbr/\u003eService]\n\n    %% Event Bus\n    ServiceBus[🚌 Azure Service Bus\u003cbr/\u003eEvent Distribution]\n\n    %% Read Services Layer\n    Movement[📊 Movement\u003cbr/\u003eService]\n    Notification[🔔 Notification\u003cbr/\u003eService]\n    Reporting[📈 Reporting\u003cbr/\u003eService]\n\n    %% Data Layer\n    SqlDB[(🗄️ Azure SQL\u003cbr/\u003eDatabase)]\n    CosmosDB[(🌍 Azure Cosmos DB\u003cbr/\u003eMovement History)]\n\n    %% Client to Gateway\n    Client --\u003e Gateway\n\n    %% Gateway to Core Services\n    Gateway --\u003e Security\n    Gateway --\u003e Account\n    Gateway --\u003e Transaction\n\n    %% Core Services to Event Bus\n    Security -.-\u003e ServiceBus\n    Account -.-\u003e ServiceBus\n    Transaction -.-\u003e ServiceBus\n\n    %% Event Bus to Read Services\n    ServiceBus -.-\u003e Movement\n    ServiceBus -.-\u003e Notification\n    ServiceBus -.-\u003e Reporting\n\n    %% Data Connections\n    Security --\u003e SqlDB\n    Account --\u003e SqlDB\n    Transaction --\u003e SqlDB\n    Movement --\u003e CosmosDB\n    Reporting --\u003e SqlDB\n    Reporting --\u003e CosmosDB\n\n    %% Styling - Darker backgrounds with white text for optimal contrast\n    classDef clientStyle fill:#0277bd,stroke:#01579b,stroke-width:2px,color:#ffffff\n    classDef gatewayStyle fill:#6a1b9a,stroke:#4a148c,stroke-width:2px,color:#ffffff\n    classDef coreServiceStyle fill:#388e3c,stroke:#2e7d32,stroke-width:2px,color:#ffffff\n    classDef readServiceStyle fill:#f57c00,stroke:#e65100,stroke-width:2px,color:#ffffff\n    classDef eventStyle fill:#ad1457,stroke:#c2185b,stroke-width:2px,color:#ffffff\n    classDef dataStyle fill:#689f38,stroke:#558b2f,stroke-width:2px,color:#ffffff\n\n    class Client clientStyle\n    class Gateway gatewayStyle\n    class Security,Account,Transaction coreServiceStyle\n    class Movement,Notification,Reporting readServiceStyle\n    class ServiceBus eventStyle\n    class SqlDB,CosmosDB dataStyle\n```\n\n## 🔄 Event-Driven Flow\n\n### Transaction Processing Flow\n\n1. **Client** initiates a deposit/withdrawal request\n2. **API Gateway** routes to Transaction Service\n3. **Transaction Service** validates and processes the transaction\n4. **Transaction Service** publishes `TransactionCreatedEvent`\n5. **Account Service** subscribes to update account balance\n6. **Movement Service** subscribes to create movement history record\n\n### Benefits\n\n- **Loose Coupling**: Services communicate through events\n- **Scalability**: Each service can scale independently\n- **Resilience**: Failure in one service doesn't affect others\n- **Eventual Consistency**: Data consistency across services\n\n## 📁 Project Structure\n\n```\nBankSystemMicroservices/\n├── 📄 README.md                                  # Main documentation\n├── 📄 LICENSE                                    # MIT License\n├── 📄 docker-compose.yml                         # Docker orchestration\n├── 📄 docker-compose.infrastructure.yml          # Infrastructure services\n├── 📂 src/                                       # Source code\n│   ├── 📄 BankSystem.sln                        # Main solution file\n│   ├── 📄 coverlet.runsettings                  # Test coverage settings\n│   ├── 📂 aspire-app/                           # 🏠 LOCAL DEVELOPMENT ONLY\n│   │   ├── 📂 AppHost/                          # .NET Aspire orchestration\n│   │   │   ├── 📄 AppHost.cs                    # Aspire host configuration\n│   │   │   ├── 📄 BankSystem.AppHost.csproj     # AppHost project file\n│   │   │   └── 📄 appsettings.json              # Aspire settings\n│   │   └── 📂 ServiceDefaults/                  # Aspire service defaults\n│   │       ├── 📄 Extensions.cs                 # Service extensions\n│   │       └── 📄 BankSystem.ServiceDefaults.csproj\n│   ├── 📂 gateway/                              # 🌐 LOCAL DEVELOPMENT ONLY\n│   │   └── 📂 ApiGateway/                       # YARP-based API Gateway\n│   │       ├── 📄 Program.cs                    # Gateway entry point\n│   │       ├── 📄 BankSystem.ApiGateway.csproj  # Gateway project\n│   │       └── 📄 appsettings.json              # Gateway configuration\n│   ├── 📂 services/                             # 🏗️ Microservices\n│   │   ├── 📂 Security/                         # 🔐 Authentication \u0026 Authorization\n│   │   │   ├── 📂 src/\n│   │   │   │   ├── 📂 Security.Api/             # Web API layer\n│   │   │   │   ├── 📂 Security.Application/     # Application layer (CQRS)\n│   │   │   │   ├── 📂 Security.Domain/          # Domain layer (DDD)\n│   │   │   │   └── 📂 Security.Infrastructure/  # Infrastructure layer\n│   │   │   └── 📂 tests/                        # Service-specific tests\n│   │   │       ├── 📂 Security.Application.UnitTests/\n│   │   │       ├── 📂 Security.Domain.UnitTests/\n│   │   │       └── 📂 Security.Infrastructure.IntegrationTests/\n│   │   ├── 📂 Account/                          # 🏦 Account Management\n│   │   │   ├── 📂 src/                          # Same structure as Security\n│   │   │   └── 📂 tests/                        # Same test structure\n│   │   ├── 📂 Transaction/                      # 💸 Transaction Processing (Write)\n│   │   │   ├── 📂 src/                          # Same structure as Security\n│   │   │   └── 📂 tests/                        # Same test structure\n│   │   ├── 📂 Movement/                         # 📊 Movement History (Read)\n│   │   │   ├── 📂 src/                          # Same structure as Security\n│   │   │   └── 📂 tests/                        # Same test structure\n│   │   ├── 📂 Notification/                     # 🔔 Notifications\n│   │   │   ├── 📂 src/                          # Same structure as Security\n│   │   │   └── 📂 tests/                        # Same test structure\n│   │   └── 📂 Reporting/                        # 📈 Reporting \u0026 Analytics\n│   │       ├── 📂 src/                          # Same structure as Security\n│   │       └── 📂 tests/                        # Same test structure\n│   └── 📂 shared/                               # 🔗 Shared Components\n│       ├── 📂 src/\n│       │   ├── 📂 BankSystem.Shared.Application/ # Application layer components\n│       │   ├── 📂 BankSystem.Shared.Domain/     # Common domain logic\n│       │   ├── 📂 BankSystem.Shared.Infrastructure/ # Common infrastructure\n│       │   ├── 📂 BankSystem.Shared.Kernel/     # Core domain abstractions\n│       │   └── 📂 BankSystem.Shared.WebApiDefaults/     # Web API configurations\n│       └── 📂 tests/\n│           │── 📂 BankSystem.Shared.Domain.UnitTests/\n│           └── 📂 BankSystem.Shared.Infrastructure.IntegrationTests/\n├── 📂 docs/                                     # 📚 Documentation\n│   ├── 📄 dotnet-development-guidelines.md      # Development guidelines\n│   ├── 📄 health-checks-configuration.md        # Health checks guide\n│   ├── 📄 sonarqube-integration-guide.md        # SonarQube setup\n│   └── 📂 guidelines/                           # Detailed guidelines\n│       ├── 📄 clean-code.md                     # Clean code practices\n│       ├── 📄 api-design.md                     # API design patterns\n│       ├── 📄 cqrs-implementation.md            # CQRS patterns\n│       └── 📄 ...                               # Other guidelines\n├── 📂 scripts/                                  # 🔧 Build \u0026 Deployment Scripts\n│   ├── 📄 build-local.bat                       # Windows build script\n│   ├── 📄 build-local.ps1                       # PowerShell build script\n│   ├── 📄 run-unit-tests.ps1                    # Test execution script\n│   └── 📄 BUILD_SCRIPTS.md                      # Scripts documentation\n├── 📂 tests/                                    # 🧪 Cross-Service Integration Tests\n│   └── 📂 integration/                          # End-to-end test scenarios\n└── 📂 build/                                    # 🚀 CI/CD Configurations\n    ├── 📂 azure-pipelines/                      # Azure DevOps pipelines\n    │   └── 📄 ci-build-test.yml                 # CI/CD pipeline definition\n    └── 📂 terraform/                            # Infrastructure as Code\n        ├── 📄 main.tf                           # Main Terraform config\n        └── 📄 variables.tf                      # Terraform variables\n```\n\n### Local vs Production Components\n\n- **aspire-app/** and **gateway/**: Used only for local development\n- **Production**: Azure API Management and Azure Application Insights replace these components\n\n## 🚦 Getting Started\n\n### Prerequisites\n\n- .NET 9 SDK\n- Docker Desktop\n- Azure CLI\n- Visual Studio 2022 or VS Code\n\n### Local Development Setup\n\n1. **Clone the repository**\n\n   ```bash\n   git clone https://github.com/your-org/bank-system-microservices.git\n   cd bank-system-microservices\n   ```\n\n2. **Start infrastructure services**\n\n   ```bash\n   docker-compose -f docker-compose.infrastructure.yml up -d\n   ```\n\n3. **Update connection strings**\n\n   ```bash\n   # Update appsettings.Development.json in each service\n   ```\n\n4. **Run database migrations**\n\n   ```bash\n   dotnet ef database update --project src/services/Account/src/Account.Infrastructure\n   dotnet ef database update --project src/services/Transaction/src/Transaction.Infrastructure\n   ```\n\n5. **Start services**\n\n   ```bash\n   # Terminal 1 - Security Service\n   dotnet run --project src/services/Security/src/Security.Api\n\n   # Terminal 2 - Account Service\n   dotnet run --project src/services/Account/src/Account.Api\n\n   # Terminal 3 - Transaction Service\n   dotnet run --project src/services/Transaction/src/Transaction.Api\n\n   # Terminal 4 - Movement Service\n   dotnet run --project src/services/Movement/src/Movement.Api\n\n   # Terminal 5 - Notification Service\n   dotnet run --project src/services/Notification/src/Notification.Api\n\n   # Terminal 6 - Reporting Service\n   dotnet run --project src/services/Reporting/src/Reporting.Api\n   ```\n\n## 🔧 Configuration\n\n### Environment Variables\n\n```bash\n# Database Connections\nCONNECTIONSTRINGS__DEFAULTCONNECTION=\"Server=localhost;Database=BankSystem;Trusted_Connection=true;\"\n\n# Azure Service Bus\nAZURE__SERVICEBUS__CONNECTIONSTRING=\"Endpoint=sb://your-namespace.servicebus.windows.net/...\"\n\n# JWT Settings\nJWT__KEY=\"your-super-secret-key\"\nJWT__ISSUER=\"https://localhost:5001\"\nJWT__AUDIENCE=\"bank-system-api\"\n```\n\n## 📊 API Documentation\n\nEach microservice exposes its own OpenAPI/Scalar documentation:\n\n- **Security API**: `https://localhost:5001/scalar`\n- **Account API**: `https://localhost:5002/scalar`\n- **Transaction API**: `https://localhost:5003/scalar`\n- **Movement API**: `https://localhost:5004/scalar`\n- **Notification API**: `https://localhost:5005/scalar`\n- **Reporting API**: `https://localhost:5006/scalar`\n\n## 🧪 Testing\n\n### Run Unit Tests\n\n**Basic unit test execution:**\n\n```bash\ndotnet test\n```\n\n**Run unit tests with code coverage (recommended):**\n\n```powershell\n# Use the provided PowerShell script\n./scripts/run-unit-tests.ps1\n```\n\nThis will:\n\n- Run all unit test projects in the solution\n- Generate code coverage reports in multiple formats (HTML, Cobertura, JSON)\n- Open the HTML coverage report automatically\n- Results are saved to `TestResults/` directory\n\n**Manual coverage command:**\n\n```bash\ndotnet test --configuration Debug --collect:\"XPlat Code Coverage\" --settings coverlet.runsettings --results-directory TestResults /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=TestResults/coverage.cobertura.xml\n```\n\n### Run Integration Tests\n\n```bash\ndotnet test --configuration Release --filter Category=Integration\n```\n\n### Run Load Tests\n\n```bash\n# Using k6 or Azure Load Testing\nk6 run tests/load/transaction-load-test.js\n```\n\n### Available Test Scripts\n\nSee [scripts/README.md](scripts/README.md) for detailed information about available build and test scripts.\n\n## 🚀 Deployment\n\n### Azure Deployment\n\n```bash\n# Deploy infrastructure\nterraform apply -var-file=\"environments/prod.tfvars\"\n\n# Deploy applications\naz acr build --registry bankSystemRegistry --image security-service:latest ./src/services/Security\naz containerapp update --name security-service --image bankSystemRegistry.azurecr.io/security-service:latest\n```\n\n## 🔍 Monitoring \u0026 Observability\n\n- **Application Insights**: Performance monitoring and telemetry\n- **Azure Monitor**: Infrastructure monitoring\n- **Structured Logging**: Centralized logging with Serilog\n- **Health Checks**: Service health monitoring\n- **Distributed Tracing**: Request flow tracking\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Follow the [Development Guidelines](docs/dotnet-development-guidelines.md)\n4. Commit your changes (`git commit -m 'Add amazing feature'`)\n5. Push to the branch (`git push origin feature/amazing-feature`)\n6. Open a Pull Request\n\n## 📚 Documentation\n\n- [.NET Development Guidelines](docs/dotnet-development-guidelines.md)\n- [API Documentation](docs/api-documentation.md)\n- [Architecture Decision Records](docs/adr/)\n- [Deployment Guide](docs/deployment-guide.md)\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🔗 Related Services\n\n- [Security Service](src/services/Security/README.md)\n- [Account Service](src/services/Account/README.md)\n- [Transaction Service](src/services/Transaction/README.md)\n- [Movement Service](src/services/Movement/README.md)\n- [Notification Service](src/services/Notification/README.md)\n- [Reporting Service](src/services/Reporting/README.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristofima%2Fbanksystemmicroservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcristofima%2Fbanksystemmicroservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristofima%2Fbanksystemmicroservices/lists"}