# taheryhaia2/mini-api-assurance architecture

> Architecture diagram of the GitHub repository taheryhaia2/mini-api-assurance, 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/taheryhaia2/mini-api-assurance
- Repository: https://github.com/taheryhaia2/mini-api-assurance

## Overview

Mini-API Assurance is an insurance-management application: users authenticate, then manage clients, issue and inspect contracts, and file and review claims. The Angular frontend calls a Spring REST API; service-layer rules validate client eligibility, contract dates and claim coverage before persistence. Authentication issues JWTs, while protected API access is role-aware. PostgreSQL stores application records and claim attachments are written to local uploads. The README also documents Swagger/OpenAPI. Some frontend service and backend controller implementations were not sampled, so those links reflect the documented API workflow and repository structure.

Main entry points: [`frontend/src/app/app.routes.ts`](https://github.com/taheryhaia2/mini-api-assurance/blob/master/frontend/src/app/app.routes.ts) (Application routes), [`src/main/java/com/assurance/mini_api_assurance/service/ClaimService.java`](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/service/ClaimService.java) (Claim service), [`frontend/src/app/features/client/client-detail/client-detail.ts`](https://github.com/taheryhaia2/mini-api-assurance/blob/master/frontend/src/app/features/client/client-detail/client-detail.ts) (Client detail), [`src/main/java/com/assurance/mini_api_assurance/controller/AuthController.java`](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/controller/AuthController.java) (Auth controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Angular frontend"]
  node_app["App shell<br/>[app.ts]"]
  node_routes["Application routes<br/>[app.routes.ts]"]
  node_login["Login screen<br/>[login.component.ts]"]
  node_authui["Auth service<br/>[auth.service.ts]"]
  node_clientui["Client screens"]
  node_clientdetail["Client detail<br/>[client-detail.ts]"]
  node_contractui["Contract screens"]
  node_claimui["Claim screens"]
  node_userui["User screens"]
end

subgraph group_api["REST API"]
  node_authcontroller["Auth controller"]
  node_clientcontroller["Client controller"]
  node_contractcontroller["Contract controller"]
  node_claimcontroller["Claim controller"]
  node_usercontroller["User controller"]
end

subgraph group_domain["Insurance services"]
  node_clientservice["Client service<br/>[ClientService.java]"]
  node_contractservice["Contract service"]
  node_claimservice["Claim service<br/>[ClaimService.java]"]
  node_userservice["User service<br/>[UserService.java]"]
end

subgraph group_security["Identity and access"]
  node_securityconfig["Security config"]
  node_jwtfilter["JWT filter<br/>[JwtAuthFilter.java]"]
  node_jwtservice["JWT service<br/>[JwtService.java]"]
  node_detailsservice["User details"]
end

subgraph group_persistence["Data and files"]
  node_clientrepo["Client repository"]
  node_contractrepo["Contract repository"]
  node_claimrepo["Claim repository"]
  node_userrepo["User repository"]
end

node_user(("User"))
node_postgres[("PostgreSQL")]
node_uploads[("Claim uploads")]
node_swagger["Swagger UI<br/>[OpenApiConfig.java]"]
node_browser(("Browser"))

node_user -->|"uses"| node_browser
node_browser -->|"opens"| node_app
node_app -->|"renders routes"| node_routes
node_routes -->|"routes to"| node_login
node_routes -->|"routes to"| node_clientui
node_routes -->|"routes to"| node_clientdetail
node_routes -->|"routes to"| node_contractui
node_routes -->|"routes to"| node_claimui
node_routes -->|"routes to"| node_userui
node_login -->|"submits credentials"| node_authui
node_authui -->|"calls auth API"| node_authcontroller
node_clientui -->|"calls client API"| node_clientcontroller
node_clientdetail -->|"loads client"| node_clientcontroller
node_clientdetail -->|"loads contracts"| node_contractcontroller
node_contractui -->|"calls contract API"| node_contractcontroller
node_claimui -->|"calls claim API"| node_claimcontroller
node_userui -->|"calls user API"| node_usercontroller
node_authcontroller -->|"registers and loads users"| node_userservice
node_authcontroller -->|"issues token"| node_jwtservice
node_clientcontroller -->|"delegates requests"| node_clientservice
node_contractcontroller -->|"delegates requests"| node_contractservice
node_claimcontroller -->|"delegates requests"| node_claimservice
node_usercontroller -->|"delegates requests"| node_userservice
node_clientservice -->|"reads and writes"| node_clientrepo
node_contractservice -->|"reads and writes"| node_contractrepo
node_contractservice -->|"loads client"| node_clientrepo
node_claimservice -->|"checks contract"| node_contractrepo
node_claimservice -->|"reads and writes"| node_claimrepo
node_userservice -->|"reads and writes"| node_userrepo
node_clientrepo -->|"persists records"| node_postgres
node_contractrepo -->|"persists records"| node_postgres
node_claimrepo -->|"persists records"| node_postgres
node_userrepo -->|"persists records"| node_postgres
node_claimservice -->|"writes attachments"| node_uploads
node_securityconfig -->|"configures filter"| node_jwtfilter
node_jwtfilter -->|"validates tokens"| node_jwtservice
node_jwtfilter -->|"loads identity"| node_detailsservice
node_detailsservice -->|"looks up user"| node_userrepo
node_swagger -.->|"serves API docs"| node_browser

click node_app "https://github.com/taheryhaia2/mini-api-assurance/blob/master/frontend/src/app/app.ts"
click node_routes "https://github.com/taheryhaia2/mini-api-assurance/blob/master/frontend/src/app/app.routes.ts"
click node_login "https://github.com/taheryhaia2/mini-api-assurance/blob/master/frontend/src/app/features/login/login.component.ts"
click node_authui "https://github.com/taheryhaia2/mini-api-assurance/blob/master/frontend/src/app/core/services/auth.service.ts"
click node_clientui "https://github.com/taheryhaia2/mini-api-assurance/blob/master/frontend/src/app/features/client/client-list/client-list.component.ts"
click node_clientdetail "https://github.com/taheryhaia2/mini-api-assurance/blob/master/frontend/src/app/features/client/client-detail/client-detail.ts"
click node_authcontroller "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/controller/AuthController.java"
click node_clientcontroller "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/controller/ClientController.java"
click node_contractcontroller "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/controller/ContractController.java"
click node_claimcontroller "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/controller/ClaimController.java"
click node_usercontroller "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/controller/UserController.java"
click node_clientservice "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/service/ClientService.java"
click node_contractservice "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/service/ContractService.java"
click node_claimservice "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/service/ClaimService.java"
click node_userservice "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/service/UserService.java"
click node_securityconfig "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/config/SecurityConfig.java"
click node_jwtfilter "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/security/JwtAuthFilter.java"
click node_jwtservice "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/security/JwtService.java"
click node_detailsservice "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/security/CustomUserDetailsService.java"
click node_clientrepo "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/repository/ClientRepository.java"
click node_contractrepo "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/repository/ContractRepository.java"
click node_claimrepo "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/repository/ClaimRepository.java"
click node_userrepo "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/repository/UserRepository.java"
click node_swagger "https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/config/OpenApiConfig.java"

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_app,node_routes,node_login,node_authui,node_clientui,node_clientdetail,node_contractui,node_claimui,node_userui,node_user,node_swagger,node_browser toneBlue
class node_authcontroller,node_clientcontroller,node_contractcontroller,node_claimcontroller,node_usercontroller,node_postgres,node_uploads toneAmber
class node_clientservice,node_contractservice,node_claimservice,node_userservice toneMint
class node_securityconfig,node_jwtfilter,node_jwtservice,node_detailsservice toneRose
class node_clientrepo,node_contractrepo,node_claimrepo,node_userrepo toneIndigo
```

## Components

### Angular frontend

- [App shell](https://github.com/taheryhaia2/mini-api-assurance/blob/master/frontend/src/app/app.ts): `frontend/src/app/app.ts`
- [Application routes](https://github.com/taheryhaia2/mini-api-assurance/blob/master/frontend/src/app/app.routes.ts): `frontend/src/app/app.routes.ts`
- [Login screen](https://github.com/taheryhaia2/mini-api-assurance/blob/master/frontend/src/app/features/login/login.component.ts): `frontend/src/app/features/login/login.component.ts`
- [Auth service](https://github.com/taheryhaia2/mini-api-assurance/blob/master/frontend/src/app/core/services/auth.service.ts): `frontend/src/app/core/services/auth.service.ts`
- [Client screens](https://github.com/taheryhaia2/mini-api-assurance/blob/master/frontend/src/app/features/client/client-list/client-list.component.ts): `frontend/src/app/features/client/client-list/client-list.component.ts`
- [Client detail](https://github.com/taheryhaia2/mini-api-assurance/blob/master/frontend/src/app/features/client/client-detail/client-detail.ts): `frontend/src/app/features/client/client-detail/client-detail.ts`
- **Contract screens**
- **Claim screens**
- **User screens**

### REST API

- [Auth controller](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/controller/AuthController.java): `src/main/java/com/assurance/mini_api_assurance/controller/AuthController.java`
- [Client controller](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/controller/ClientController.java): `src/main/java/com/assurance/mini_api_assurance/controller/ClientController.java`
- [Contract controller](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/controller/ContractController.java): `src/main/java/com/assurance/mini_api_assurance/controller/ContractController.java`
- [Claim controller](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/controller/ClaimController.java): `src/main/java/com/assurance/mini_api_assurance/controller/ClaimController.java`
- [User controller](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/controller/UserController.java): `src/main/java/com/assurance/mini_api_assurance/controller/UserController.java`

### Insurance services

- [Client service](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/service/ClientService.java): `src/main/java/com/assurance/mini_api_assurance/service/ClientService.java`
- [Contract service](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/service/ContractService.java): `src/main/java/com/assurance/mini_api_assurance/service/ContractService.java`
- [Claim service](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/service/ClaimService.java): `src/main/java/com/assurance/mini_api_assurance/service/ClaimService.java`
- [User service](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/service/UserService.java): `src/main/java/com/assurance/mini_api_assurance/service/UserService.java`

### Identity and access

- [Security config](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/config/SecurityConfig.java): `src/main/java/com/assurance/mini_api_assurance/config/SecurityConfig.java`
- [JWT filter](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/security/JwtAuthFilter.java): `src/main/java/com/assurance/mini_api_assurance/security/JwtAuthFilter.java`
- [JWT service](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/security/JwtService.java): `src/main/java/com/assurance/mini_api_assurance/security/JwtService.java`
- [User details](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/security/CustomUserDetailsService.java): `src/main/java/com/assurance/mini_api_assurance/security/CustomUserDetailsService.java`

### Data and files

- [Client repository](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/repository/ClientRepository.java): `src/main/java/com/assurance/mini_api_assurance/repository/ClientRepository.java`
- [Contract repository](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/repository/ContractRepository.java): `src/main/java/com/assurance/mini_api_assurance/repository/ContractRepository.java`
- [Claim repository](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/repository/ClaimRepository.java): `src/main/java/com/assurance/mini_api_assurance/repository/ClaimRepository.java`
- [User repository](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/repository/UserRepository.java): `src/main/java/com/assurance/mini_api_assurance/repository/UserRepository.java`

### Other components

- **User**
- **PostgreSQL**
- **Claim uploads**
- [Swagger UI](https://github.com/taheryhaia2/mini-api-assurance/blob/master/src/main/java/com/assurance/mini_api_assurance/config/OpenApiConfig.java): `src/main/java/com/assurance/mini_api_assurance/config/OpenApiConfig.java`
- **Browser**

## Connections

- User → Browser: uses
- Browser → App shell: opens
- App shell → Application routes: renders routes
- Application routes → Login screen: routes to
- Application routes → Client screens: routes to
- Application routes → Client detail: routes to
- Application routes → Contract screens: routes to
- Application routes → Claim screens: routes to
- Application routes → User screens: routes to
- Login screen → Auth service: submits credentials
- Auth service → Auth controller: calls auth API
- Client screens → Client controller: calls client API
- Client detail → Client controller: loads client
- Client detail → Contract controller: loads contracts
- Contract screens → Contract controller: calls contract API
- Claim screens → Claim controller: calls claim API
- User screens → User controller: calls user API
- Auth controller → User service: registers and loads users
- Auth controller → JWT service: issues token
- Client controller → Client service: delegates requests
- Contract controller → Contract service: delegates requests
- Claim controller → Claim service: delegates requests
- User controller → User service: delegates requests
- Client service → Client repository: reads and writes
- Contract service → Contract repository: reads and writes
- Contract service → Client repository: loads client
- Claim service → Contract repository: checks contract
- Claim service → Claim repository: reads and writes
- User service → User repository: reads and writes
- Client repository → PostgreSQL: persists records
- Contract repository → PostgreSQL: persists records
- Claim repository → PostgreSQL: persists records
- User repository → PostgreSQL: persists records
- Claim service → Claim uploads: writes attachments
- Security config → JWT filter: configures filter
- JWT filter → JWT service: validates tokens
- JWT filter → User details: loads identity
- User details → User repository: looks up user
- Swagger UI → Browser: serves API docs
