# hinteadan/h.necessaire architecture

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

- Interactive diagram: https://gitdiagram.com/hinteadan/h.necessaire
- Repository: https://github.com/hinteadan/h.necessaire

## Overview

H.Necessaire is a .NET library of reusable data and operation extensions, with runtime packages for storage, security, and application integration. A representative workflow is an HTTP request routed through an ASP.NET Core controller to a storage use case and service; storage providers implement persistence, while security aggregation uses storage resources. The README also describes models, extensions, and operations, but the supplied tree and excerpts expose only part of those implementations. Relationships below are limited to indexed references and excerpted interfaces; unsampled capabilities are shown without speculative call paths.

Main entry points: [`Src/H.Necessaire/H.Necessaire.Runtime/Security/Resources/ImAUserAuthInfoStorageResource.cs`](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime/Security/Resources/ImAUserAuthInfoStorageResource.cs) (Auth storage contract), [`Src/H.Necessaire/H.Necessaire.Runtime.Azure.CosmosDB/Core/HsCosmosStorageService.cs`](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.Azure.CosmosDB/Core/HsCosmosStorageService.cs) (Cosmos storage), [`Src/H.Necessaire/H.Necessaire.RavenDB/Abstract/RavenDbStorageResourceBase.cs`](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.RavenDB/Abstract/RavenDbStorageResourceBase.cs) (Raven storage base), [`Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/Controllers/StorageServiceController.cs`](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/Controllers/StorageServiceController.cs) (HTTP API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_core["Core data"]
  node_storage_contract["Storage contract"]
  node_result["Operation results<br/>[OperationResult.cs]"]
  node_notes["Notes and metadata<br/>[Note.cs]"]
  node_paging["Paging and streams<br/>[Page.cs]"]
  node_storage_browser["Storage browsing"]
  node_data_stream["Disposable streams<br/>[DataStream.cs]"]
  node_dependency_provider["Dependency provider"]
  node_logger["Logging contract<br/>[ImALogger.cs]"]
end

subgraph group_storage["Storage providers"]
  node_cosmos_service[("Cosmos storage")]
  node_raven_base[("Raven storage base")]
  node_raven_contract["Raven resource contract"]
end

subgraph group_security["Identity and security"]
  node_auth_engine["Auth aggregator"]
  node_auth_contract["Auth storage contract"]
  node_file_auth[("File auth storage")]
  node_cosmos_auth[("Cosmos auth storage")]
  node_firestore_auth[("Firestore auth storage")]
  node_raven_auth[("RavenDB auth storage")]
  node_sql_auth[("SQL auth storage")]
end

subgraph group_integration["Application integration"]
  node_http_api["HTTP API"]
  node_http_usecase["Storage use case"]
  node_http_storage["HTTP storage adapter"]
end

node_consumer(("API consumer"))

node_consumer -->|"sends request"| node_http_api
node_http_api -->|"routes to"| node_http_usecase
node_http_api -->|"resolves"| node_storage_contract
node_http_storage -->|"implements"| node_storage_contract
node_auth_engine -->|"uses"| node_auth_contract
node_file_auth -->|"implements"| node_auth_contract
node_cosmos_auth -->|"implements"| node_auth_contract
node_firestore_auth -->|"implements"| node_auth_contract
node_raven_auth -->|"extends"| node_raven_base
node_raven_base -->|"implements"| node_raven_contract
node_sql_auth -->|"implements"| node_auth_contract
node_cosmos_service -->|"returns"| node_result
node_cosmos_service -->|"uses"| node_paging
node_cosmos_service -->|"uses"| node_data_stream
node_raven_base -->|"uses"| node_dependency_provider

click node_http_api "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/Controllers/StorageServiceController.cs"
click node_http_usecase "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/UseCases/StorageServiceHttpApiUseCase.cs"
click node_storage_contract "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/Operations/Storage/ImAStorageService.cs"
click node_http_storage "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/XtnxForHttpApiStorageService.cs"
click node_result "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/Models/OperationResult.cs"
click node_notes "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/Models/Note.cs"
click node_paging "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/Models/Collections/Page.cs"
click node_storage_browser "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/Operations/Storage/ImAStorageBrowserService.cs"
click node_data_stream "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/Operations/Concrete/DataStream.cs"
click node_auth_engine "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime/Security/Engines/Concrete/UserAuthAggregatorEngine.cs"
click node_auth_contract "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime/Security/Resources/ImAUserAuthInfoStorageResource.cs"
click node_file_auth "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime/Security/Resources/Concrete/UserAuthInfoFileSystemStorageResource.cs"
click node_cosmos_auth "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.Azure.CosmosDB/Security/Resources/AzureCosmosDbCachedUserAuthInfoStorageResource.cs"
click node_firestore_auth "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.Google.FirestoreDB/Security/Resources/GoogleFirestoreDbCachedUserAuthInfoStorageResource.cs"
click node_raven_auth "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.RavenDB/Security/Resources/RavenDbCachedUserAuthInfoStorageResource.cs"
click node_sql_auth "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.SqlServer/Security/Resources/SqlServerCachedUserAuthInfoStorageResource.cs"
click node_cosmos_service "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.Azure.CosmosDB/Core/HsCosmosStorageService.cs"
click node_raven_base "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.RavenDB/Abstract/RavenDbStorageResourceBase.cs"
click node_raven_contract "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.RavenDB/ImARavenDbStorageResource.cs"
click node_dependency_provider "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/IoC/ImADependencyProvider.cs"
click node_logger "https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/Operations/Logging/ImALogger.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_storage_contract,node_result,node_notes,node_paging,node_storage_browser,node_data_stream,node_dependency_provider,node_logger toneBlue
class node_cosmos_service,node_raven_base,node_raven_contract toneAmber
class node_auth_engine,node_auth_contract,node_file_auth,node_cosmos_auth,node_firestore_auth,node_raven_auth,node_sql_auth,node_consumer toneMint
class node_http_api,node_http_usecase,node_http_storage toneRose
```

## Components

### Core data

- [Storage contract](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/Operations/Storage/ImAStorageService.cs): `Src/H.Necessaire/H.Necessaire/Operations/Storage/ImAStorageService.cs`
- [Operation results](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/Models/OperationResult.cs): `Src/H.Necessaire/H.Necessaire/Models/OperationResult.cs`
- [Notes and metadata](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/Models/Note.cs): `Src/H.Necessaire/H.Necessaire/Models/Note.cs`
- [Paging and streams](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/Models/Collections/Page.cs): `Src/H.Necessaire/H.Necessaire/Models/Collections/Page.cs`
- [Storage browsing](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/Operations/Storage/ImAStorageBrowserService.cs): `Src/H.Necessaire/H.Necessaire/Operations/Storage/ImAStorageBrowserService.cs`
- [Disposable streams](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/Operations/Concrete/DataStream.cs): `Src/H.Necessaire/H.Necessaire/Operations/Concrete/DataStream.cs`
- [Dependency provider](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/IoC/ImADependencyProvider.cs): `Src/H.Necessaire/H.Necessaire/IoC/ImADependencyProvider.cs`
- [Logging contract](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire/Operations/Logging/ImALogger.cs): `Src/H.Necessaire/H.Necessaire/Operations/Logging/ImALogger.cs`

### Storage providers

- [Cosmos storage](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.Azure.CosmosDB/Core/HsCosmosStorageService.cs): `Src/H.Necessaire/H.Necessaire.Runtime.Azure.CosmosDB/Core/HsCosmosStorageService.cs`
- [Raven storage base](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.RavenDB/Abstract/RavenDbStorageResourceBase.cs): `Src/H.Necessaire/H.Necessaire.RavenDB/Abstract/RavenDbStorageResourceBase.cs`
- [Raven resource contract](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.RavenDB/ImARavenDbStorageResource.cs): `Src/H.Necessaire/H.Necessaire.RavenDB/ImARavenDbStorageResource.cs`

### Identity and security

- [Auth aggregator](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime/Security/Engines/Concrete/UserAuthAggregatorEngine.cs): `Src/H.Necessaire/H.Necessaire.Runtime/Security/Engines/Concrete/UserAuthAggregatorEngine.cs`
- [Auth storage contract](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime/Security/Resources/ImAUserAuthInfoStorageResource.cs): `Src/H.Necessaire/H.Necessaire.Runtime/Security/Resources/ImAUserAuthInfoStorageResource.cs`
- [File auth storage](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime/Security/Resources/Concrete/UserAuthInfoFileSystemStorageResource.cs): `Src/H.Necessaire/H.Necessaire.Runtime/Security/Resources/Concrete/UserAuthInfoFileSystemStorageResource.cs`
- [Cosmos auth storage](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.Azure.CosmosDB/Security/Resources/AzureCosmosDbCachedUserAuthInfoStorageResource.cs): `Src/H.Necessaire/H.Necessaire.Runtime.Azure.CosmosDB/Security/Resources/AzureCosmosDbCachedUserAuthInfoStorageResource.cs`
- [Firestore auth storage](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.Google.FirestoreDB/Security/Resources/GoogleFirestoreDbCachedUserAuthInfoStorageResource.cs): `Src/H.Necessaire/H.Necessaire.Runtime.Google.FirestoreDB/Security/Resources/GoogleFirestoreDbCachedUserAuthInfoStorageResource.cs`
- [RavenDB auth storage](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.RavenDB/Security/Resources/RavenDbCachedUserAuthInfoStorageResource.cs): `Src/H.Necessaire/H.Necessaire.Runtime.RavenDB/Security/Resources/RavenDbCachedUserAuthInfoStorageResource.cs`
- [SQL auth storage](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.SqlServer/Security/Resources/SqlServerCachedUserAuthInfoStorageResource.cs): `Src/H.Necessaire/H.Necessaire.Runtime.SqlServer/Security/Resources/SqlServerCachedUserAuthInfoStorageResource.cs`

### Application integration

- [HTTP API](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/Controllers/StorageServiceController.cs): `Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/Controllers/StorageServiceController.cs`
- [Storage use case](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/UseCases/StorageServiceHttpApiUseCase.cs): `Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/UseCases/StorageServiceHttpApiUseCase.cs`
- [HTTP storage adapter](https://github.com/hinteadan/h.necessaire/blob/master/Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/XtnxForHttpApiStorageService.cs): `Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/XtnxForHttpApiStorageService.cs`

### Other components

- **API consumer**

## Connections

- API consumer → HTTP API: sends request (evidence: `Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/Controllers/StorageServiceController.cs`)
- HTTP API → Storage use case: routes to (evidence: `Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/Controllers/StorageServiceController.cs`)
- HTTP API → Storage contract: resolves (evidence: `Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/Controllers/StorageServiceController.cs`)
- HTTP storage adapter → Storage contract: implements (evidence: `Src/H.Necessaire/H.Necessaire.Runtime.Integration.AspNetCore/XtnxForHttpApiStorageService.cs`)
- Auth aggregator → Auth storage contract: uses (evidence: `Src/H.Necessaire/H.Necessaire.Runtime/Security/Engines/Concrete/UserAuthAggregatorEngine.cs`)
- File auth storage → Auth storage contract: implements (evidence: `Src/H.Necessaire/H.Necessaire.Runtime/Security/Resources/Concrete/UserAuthInfoFileSystemStorageResource.cs`)
- Cosmos auth storage → Auth storage contract: implements (evidence: `Src/H.Necessaire/H.Necessaire.Runtime.Azure.CosmosDB/Security/Resources/AzureCosmosDbCachedUserAuthInfoStorageResource.cs`)
- Firestore auth storage → Auth storage contract: implements (evidence: `Src/H.Necessaire/H.Necessaire.Runtime.Google.FirestoreDB/Security/Resources/GoogleFirestoreDbCachedUserAuthInfoStorageResource.cs`)
- RavenDB auth storage → Raven storage base: extends (evidence: `Src/H.Necessaire/H.Necessaire.Runtime.RavenDB/Security/Resources/RavenDbCachedUserAuthInfoStorageResource.cs`)
- Raven storage base → Raven resource contract: implements (evidence: `Src/H.Necessaire/H.Necessaire.RavenDB/Abstract/RavenDbStorageResourceBase.cs`)
- SQL auth storage → Auth storage contract: implements (evidence: `Src/H.Necessaire/H.Necessaire.Runtime.SqlServer/Security/Resources/SqlServerCachedUserAuthInfoStorageResource.cs`)
- Cosmos storage → Operation results: returns (evidence: `Src/H.Necessaire/H.Necessaire.Runtime.Azure.CosmosDB/Core/HsCosmosStorageService.cs`)
- Cosmos storage → Paging and streams: uses (evidence: `Src/H.Necessaire/H.Necessaire.Runtime.Azure.CosmosDB/Core/HsCosmosStorageService.cs`)
- Cosmos storage → Disposable streams: uses (evidence: `Src/H.Necessaire/H.Necessaire.Runtime.Azure.CosmosDB/Core/HsCosmosStorageService.cs`)
- Raven storage base → Dependency provider: uses (evidence: `Src/H.Necessaire/H.Necessaire.RavenDB/Abstract/RavenDbStorageResourceBase.cs`)
