# 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/`.