# Component Diagram ```mermaid graph TD subgraph "Common Helpers" EXT["Extensions
(Enum, String, Stream, Queryable)"] BEX["BusinessException
(ExceptionEnum)"] end subgraph "01 Data Layer" DB["AzaionDb + SchemaHolder"] DBF["DbFactory
(IDbFactory)"] CACHE["MemoryCache
(ICache)"] ENT["User, RoleEnum"] CFG["Configs
(ConnectionStrings, JwtConfig, ResourcesConfig)"] end subgraph "02 User Management" US["UserService
(IUserService)"] REQ["Request DTOs
+ Validators"] end subgraph "03 Auth & Security" AUTH["AuthService
(IAuthService)"] SEC["Security
(static: hash, encrypt, decrypt)"] end subgraph "04 Resource Management" RES["ResourcesService
(IResourcesService)"] end subgraph "05 Admin API" API["Program.cs
(Minimal API endpoints)"] EXH["BusinessExceptionHandler"] end DB --> ENT DB --> EXT DBF --> DB DBF --> CFG US --> DBF US --> CACHE US --> SEC US --> BEX US --> EXT AUTH --> US AUTH --> CFG RES --> CFG RES --> SEC RES --> BEX API --> US API --> AUTH API --> RES API --> DBF API --> CACHE EXH --> BEX ``` ## Component Summary | # | Component | Modules | Purpose | |---|-----------|---------|---------| | 01 | Data Layer | 9 | DB access, entities, configs, caching | | 02 | User Management | 5 | User CRUD, role management, device provisioning (hardware binding removed by AZ-197) | | 03 | Auth & Security | 2 | JWT tokens + SHA-384 password hashing (per-user file encryption removed in cycle 2) | | 04 | Resource Management | 2 | File upload / list / clear (encrypted-download + installer endpoints removed in cycle 2) | | 05 | Admin API | 2 | HTTP endpoints, middleware, DI composition | | — | Common Helpers | 6 | Extensions, BusinessException | **Total**: 26 modules across 5 components + common helpers. The previously listed in-process unit tests (`SecurityTest`, `UserServiceTest`) and the `Azaion.Test` project itself were removed in cycle 2; remaining test coverage lives in `e2e/Azaion.E2E/`.