# leoxramadani/technicalassignment architecture

> Architecture diagram of the GitHub repository leoxramadani/technicalassignment, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/leoxramadani/technicalassignment
- Repository: https://github.com/leoxramadani/technicalassignment

## Overview

This is a .NET REST API for insurance claims and covers. Clients call the controllers; application services perform CRUD, cover creation computes a premium, and create/delete operations enqueue audit events. The audit worker batches queued events into SQL Server, while claims and covers use the primary MongoDB-backed context. Validation is applied at the API boundary. The README documents further rules and endpoint behavior; source excerpts establish the main service, persistence, and audit wiring, but not every validator or database configuration detail.

Main entry points: [`Claims.Application/Covers/CoversService.cs`](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Covers/CoversService.cs) (Covers service), [`Claims.Application/Claims/ClaimsService.cs`](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Claims/ClaimsService.cs) (Claims service), [`Claims.Api/Filters/ValidationFilter.cs`](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Api/Filters/ValidationFilter.cs) (Validation filter), [`Claims.Api/Controllers/ClaimsController.cs`](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Api/Controllers/ClaimsController.cs) (Claims controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_claims_api["Claims controller"]
  node_covers_api["Covers controller"]
  node_validation_filter["Validation filter"]
end

subgraph group_app["Application workflows"]
  node_claim_validator["Claim validator"]
  node_cover_validator["Cover validator"]
  node_claims_service["Claims service<br/>[ClaimsService.cs]"]
  node_covers_service["Covers service<br/>[CoversService.cs]"]
  node_claims_context_iface["Claims context interface<br/>[IClaimsContext.cs]"]
  node_audit_queue_iface["Audit queue interface<br/>[IAuditQueue.cs]"]
  node_audit_message["Audit event<br/>[AuditMessage.cs]"]
end

subgraph group_domain["Domain logic"]
  node_premium_iface["Premium interface"]
  node_premium["Premium computation"]
  node_claim_entity["Claim records<br/>[Claim.cs]"]
  node_cover_entity["Cover records<br/>[Cover.cs]"]
end

subgraph group_infra["Persistence and auditing"]
  node_claims_context["Claims context<br/>[ClaimsContext.cs]"]
  node_mongo[("MongoDB")]
  node_audit_queue["In-memory audit queue<br/>[AuditQueue.cs]"]
  node_audit_worker["Audit background worker"]
  node_auditer["Audit persistence service<br/>[Auditer.cs]"]
  node_audit_context["Audit context<br/>[AuditContext.cs]"]
  node_sql_server[("SQL Server")]
end

node_client(("API client"))

node_client -->|"sends requests"| node_claims_api
node_client -->|"sends requests"| node_covers_api
node_claims_api -->|"dispatches CRUD"| node_claims_service
node_covers_api -->|"dispatches CRUD"| node_covers_service
node_claims_api -->|"applies filter"| node_validation_filter
node_covers_api -->|"guards compute"| node_validation_filter
node_validation_filter -->|"validates claims"| node_claim_validator
node_validation_filter -->|"validates covers"| node_cover_validator
node_claims_service -->|"queries and saves"| node_claims_context_iface
node_covers_service -->|"queries and saves"| node_claims_context_iface
node_claims_context_iface -->|"implemented by"| node_claims_context
node_claims_context -->|"reads and writes"| node_mongo
node_claims_service -->|"enqueues events"| node_audit_queue_iface
node_covers_service -->|"enqueues events"| node_audit_queue_iface
node_claims_service -->|"creates event"| node_audit_message
node_covers_service -->|"creates event"| node_audit_message
node_covers_service -->|"computes premium"| node_premium_iface
node_premium_iface -->|"implemented by"| node_premium
node_audit_queue_iface -->|"implemented by"| node_audit_queue
node_audit_worker -->|"dequeues batches"| node_audit_queue
node_audit_worker -->|"dispatches batches"| node_auditer
node_auditer -->|"persists audits"| node_audit_context
node_audit_context -->|"writes audit data"| node_sql_server

click node_claims_api "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Api/Controllers/ClaimsController.cs"
click node_covers_api "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Api/Controllers/CoversController.cs"
click node_validation_filter "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Api/Filters/ValidationFilter.cs"
click node_claim_validator "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Claims/ClaimServiceValidator.cs"
click node_cover_validator "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Covers/CoverRegistrationValidator.cs"
click node_claims_service "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Claims/ClaimsService.cs"
click node_covers_service "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Covers/CoversService.cs"
click node_claims_context_iface "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Common/Interfaces/IClaimsContext.cs"
click node_premium_iface "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Domain/Services/IPremiumComputationService.cs"
click node_premium "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Domain/Services/PremiumComputationService.cs"
click node_claim_entity "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Domain/Entities/Claim.cs"
click node_cover_entity "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Domain/Entities/Cover.cs"
click node_audit_queue_iface "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Auditing/IAuditQueue.cs"
click node_audit_message "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Auditing/AuditMessage.cs"
click node_claims_context "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Infrastructure/Persistence/ClaimsContext.cs"
click node_audit_queue "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Infrastructure/Auditing/AuditQueue.cs"
click node_audit_worker "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Infrastructure/Auditing/AuditBackgroundService.cs"
click node_auditer "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Infrastructure/Auditing/Auditer.cs"
click node_audit_context "https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Infrastructure/Persistence/AuditContext.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_claims_api,node_covers_api,node_validation_filter,node_client toneBlue
class node_claim_validator,node_cover_validator,node_claims_service,node_covers_service,node_claims_context_iface,node_audit_queue_iface,node_audit_message toneAmber
class node_premium_iface,node_premium,node_claim_entity,node_cover_entity toneMint
class node_claims_context,node_mongo,node_audit_queue,node_audit_worker,node_auditer,node_audit_context,node_sql_server toneRose
```

## Components

### HTTP API

- [Claims controller](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Api/Controllers/ClaimsController.cs): `Claims.Api/Controllers/ClaimsController.cs`
- [Covers controller](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Api/Controllers/CoversController.cs): `Claims.Api/Controllers/CoversController.cs`
- [Validation filter](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Api/Filters/ValidationFilter.cs): `Claims.Api/Filters/ValidationFilter.cs`

### Application workflows

- [Claim validator](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Claims/ClaimServiceValidator.cs): `Claims.Application/Claims/ClaimServiceValidator.cs`
- [Cover validator](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Covers/CoverRegistrationValidator.cs): `Claims.Application/Covers/CoverRegistrationValidator.cs`
- [Claims service](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Claims/ClaimsService.cs): `Claims.Application/Claims/ClaimsService.cs`
- [Covers service](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Covers/CoversService.cs): `Claims.Application/Covers/CoversService.cs`
- [Claims context interface](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Common/Interfaces/IClaimsContext.cs): `Claims.Application/Common/Interfaces/IClaimsContext.cs`
- [Audit queue interface](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Auditing/IAuditQueue.cs): `Claims.Application/Auditing/IAuditQueue.cs`
- [Audit event](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Application/Auditing/AuditMessage.cs): `Claims.Application/Auditing/AuditMessage.cs`

### Domain logic

- [Premium interface](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Domain/Services/IPremiumComputationService.cs): `Claims.Domain/Services/IPremiumComputationService.cs`
- [Premium computation](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Domain/Services/PremiumComputationService.cs): `Claims.Domain/Services/PremiumComputationService.cs`
- [Claim records](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Domain/Entities/Claim.cs): `Claims.Domain/Entities/Claim.cs`
- [Cover records](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Domain/Entities/Cover.cs): `Claims.Domain/Entities/Cover.cs`

### Persistence and auditing

- [Claims context](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Infrastructure/Persistence/ClaimsContext.cs): `Claims.Infrastructure/Persistence/ClaimsContext.cs`
- **MongoDB**
- [In-memory audit queue](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Infrastructure/Auditing/AuditQueue.cs): `Claims.Infrastructure/Auditing/AuditQueue.cs`
- [Audit background worker](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Infrastructure/Auditing/AuditBackgroundService.cs): `Claims.Infrastructure/Auditing/AuditBackgroundService.cs`
- [Audit persistence service](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Infrastructure/Auditing/Auditer.cs): `Claims.Infrastructure/Auditing/Auditer.cs`
- [Audit context](https://github.com/leoxramadani/technicalassignment/blob/Develop/Claims.Infrastructure/Persistence/AuditContext.cs): `Claims.Infrastructure/Persistence/AuditContext.cs`
- **SQL Server**

### Other components

- **API client**

## Connections

- API client → Claims controller: sends requests
- API client → Covers controller: sends requests
- Claims controller → Claims service: dispatches CRUD
- Covers controller → Covers service: dispatches CRUD
- Claims controller → Validation filter: applies filter
- Covers controller → Validation filter: guards compute
- Validation filter → Claim validator: validates claims
- Validation filter → Cover validator: validates covers
- Claims service → Claims context interface: queries and saves
- Covers service → Claims context interface: queries and saves
- Claims context interface → Claims context: implemented by
- Claims context → MongoDB: reads and writes
- Claims service → Audit queue interface: enqueues events
- Covers service → Audit queue interface: enqueues events
- Claims service → Audit event: creates event
- Covers service → Audit event: creates event
- Covers service → Premium interface: computes premium
- Premium interface → Premium computation: implemented by
- Audit queue interface → In-memory audit queue: implemented by
- Audit background worker → In-memory audit queue: dequeues batches
- Audit background worker → Audit persistence service: dispatches batches
- Audit persistence service → Audit context: persists audits
- Audit context → SQL Server: writes audit data
