# eddymandran/securevault architecture

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

- Interactive diagram: https://gitdiagram.com/eddymandran/securevault
- Repository: https://github.com/eddymandran/securevault

## Overview

SecureVault is a web application for managing secret credentials, with an Angular shell and a Spring Boot backend. The sampled backend implements identity authentication (password verification and access/refresh-token issuance, rotation, and logout) plus an early Vault domain and persistence slice. The README describes encryption, OAuth2, auditing, and deployment/security work as future capabilities, not implemented runtime branches. The frontend routes are empty. No sampled evidence connects the UI to backend endpoints, or the authentication service to web or persistence adapters, so those links are omitted; unsampled source is not assumed.

Main entry points: [`backend/src/main/java/com/securevault/backend/identity/service/AuthenticationService.java`](https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/identity/service/AuthenticationService.java) (Authentication service), [`backend/src/main/java/com/securevault/backend/vault/service/VaultService.java`](https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/service/VaultService.java) (Vault service), [`backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultPersistenceAdapter.java`](https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultPersistenceAdapter.java) (Persistence adapter), [`backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultMapper.java`](https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultMapper.java) (Vault mapper)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web frontend"]
  node_angular["Angular app<br/>[app.ts]"]
  node_frontend_boot["App bootstrap<br/>[main.ts]"]
  node_routes["Routes<br/>[app.routes.ts]"]
end

subgraph group_identity["Identity"]
  node_auth_service["Authentication service"]
  node_identity_models["Identity models"]
  node_auth_usecases["Auth use cases"]
  node_auth_outports["Auth ports"]
end

subgraph group_vault["Vault management"]
  node_vault_controller["Vault controller"]
  node_vault_service["Vault service<br/>[VaultService.java]"]
  node_vault_model["Vault domain<br/>[Vault.java]"]
  node_vault_usecase["Vault use case<br/>[VaultUseCase.java]"]
  node_vault_outport["Vault repository port"]
end

subgraph group_persistence["Vault persistence"]
  node_persistence_adapter["Persistence adapter"]
  node_vault_mapper["Vault mapper<br/>[VaultMapper.java]"]
  node_jpa_repository["JPA repository"]
  node_vault_entity["Vault entity"]
end

node_user(("User"))
node_database[("PostgreSQL")]

node_user -.->|"uses"| node_angular
node_frontend_boot -->|"bootstraps"| node_angular
node_frontend_boot -.->|"loads config"| node_routes
node_auth_service -->|"uses"| node_identity_models
node_auth_service -->|"implements"| node_auth_usecases
node_auth_service -->|"calls ports"| node_auth_outports
node_vault_service -->|"uses"| node_vault_model
node_vault_service -->|"implements"| node_vault_usecase
node_vault_service -->|"calls"| node_vault_outport
node_persistence_adapter -->|"implements"| node_vault_outport
node_persistence_adapter -->|"delegates"| node_jpa_repository
node_persistence_adapter -->|"maps through"| node_vault_mapper
node_vault_mapper -->|"maps domain"| node_vault_model
node_vault_mapper -->|"maps entity"| node_vault_entity
node_jpa_repository -->|"stores"| node_vault_entity
node_jpa_repository -.->|"persists"| node_database

click node_angular "https://github.com/eddymandran/securevault/blob/main/frontend/src/app/app.ts"
click node_frontend_boot "https://github.com/eddymandran/securevault/blob/main/frontend/src/main.ts"
click node_routes "https://github.com/eddymandran/securevault/blob/main/frontend/src/app/app.routes.ts"
click node_auth_service "https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/identity/service/AuthenticationService.java"
click node_identity_models "https://github.com/eddymandran/securevault/tree/main/backend/src/main/java/com/securevault/backend/identity/domain/model"
click node_auth_usecases "https://github.com/eddymandran/securevault/tree/main/backend/src/main/java/com/securevault/backend/identity/port/in"
click node_auth_outports "https://github.com/eddymandran/securevault/tree/main/backend/src/main/java/com/securevault/backend/identity/port/out"
click node_vault_controller "https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/infrastructure/web/controller/VaultController.java"
click node_vault_service "https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/service/VaultService.java"
click node_vault_model "https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/domain/model/Vault.java"
click node_vault_usecase "https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/port/in/VaultUseCase.java"
click node_vault_outport "https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/port/out/VaultRepository.java"
click node_persistence_adapter "https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultPersistenceAdapter.java"
click node_vault_mapper "https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultMapper.java"
click node_jpa_repository "https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultJpaRepository.java"
click node_vault_entity "https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultJpaEntity.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_angular,node_frontend_boot,node_routes,node_user toneBlue
class node_auth_service,node_identity_models,node_auth_usecases,node_auth_outports,node_database toneAmber
class node_vault_controller,node_vault_service,node_vault_model,node_vault_usecase,node_vault_outport toneMint
class node_persistence_adapter,node_vault_mapper,node_jpa_repository,node_vault_entity toneRose
```

## Components

### Web frontend

- [Angular app](https://github.com/eddymandran/securevault/blob/main/frontend/src/app/app.ts): `frontend/src/app/app.ts`
- [App bootstrap](https://github.com/eddymandran/securevault/blob/main/frontend/src/main.ts): `frontend/src/main.ts`
- [Routes](https://github.com/eddymandran/securevault/blob/main/frontend/src/app/app.routes.ts): `frontend/src/app/app.routes.ts`

### Identity

- [Authentication service](https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/identity/service/AuthenticationService.java): `backend/src/main/java/com/securevault/backend/identity/service/AuthenticationService.java`
- [Identity models](https://github.com/eddymandran/securevault/tree/main/backend/src/main/java/com/securevault/backend/identity/domain/model): `backend/src/main/java/com/securevault/backend/identity/domain/model`
- [Auth use cases](https://github.com/eddymandran/securevault/tree/main/backend/src/main/java/com/securevault/backend/identity/port/in): `backend/src/main/java/com/securevault/backend/identity/port/in`
- [Auth ports](https://github.com/eddymandran/securevault/tree/main/backend/src/main/java/com/securevault/backend/identity/port/out): `backend/src/main/java/com/securevault/backend/identity/port/out`

### Vault management

- [Vault controller](https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/infrastructure/web/controller/VaultController.java): `backend/src/main/java/com/securevault/backend/vault/infrastructure/web/controller/VaultController.java`
- [Vault service](https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/service/VaultService.java): `backend/src/main/java/com/securevault/backend/vault/service/VaultService.java`
- [Vault domain](https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/domain/model/Vault.java): `backend/src/main/java/com/securevault/backend/vault/domain/model/Vault.java`
- [Vault use case](https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/port/in/VaultUseCase.java): `backend/src/main/java/com/securevault/backend/vault/port/in/VaultUseCase.java`
- [Vault repository port](https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/port/out/VaultRepository.java): `backend/src/main/java/com/securevault/backend/vault/port/out/VaultRepository.java`

### Vault persistence

- [Persistence adapter](https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultPersistenceAdapter.java): `backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultPersistenceAdapter.java`
- [Vault mapper](https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultMapper.java): `backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultMapper.java`
- [JPA repository](https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultJpaRepository.java): `backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultJpaRepository.java`
- [Vault entity](https://github.com/eddymandran/securevault/blob/main/backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultJpaEntity.java): `backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultJpaEntity.java`

### Other components

- **User**
- **PostgreSQL**

## Connections

- User → Angular app: uses
- App bootstrap → Angular app: bootstraps (evidence: `frontend/src/main.ts`)
- App bootstrap → Routes: loads config
- Authentication service → Identity models: uses (evidence: `backend/src/main/java/com/securevault/backend/identity/service/AuthenticationService.java`)
- Authentication service → Auth use cases: implements (evidence: `backend/src/main/java/com/securevault/backend/identity/service/AuthenticationService.java`)
- Authentication service → Auth ports: calls ports (evidence: `backend/src/main/java/com/securevault/backend/identity/service/AuthenticationService.java`)
- Vault service → Vault domain: uses (evidence: `backend/src/main/java/com/securevault/backend/vault/service/VaultService.java`)
- Vault service → Vault use case: implements (evidence: `backend/src/main/java/com/securevault/backend/vault/service/VaultService.java`)
- Vault service → Vault repository port: calls (evidence: `backend/src/main/java/com/securevault/backend/vault/service/VaultService.java`)
- Persistence adapter → Vault repository port: implements (evidence: `backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultPersistenceAdapter.java`)
- Persistence adapter → JPA repository: delegates (evidence: `backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultPersistenceAdapter.java`)
- Persistence adapter → Vault mapper: maps through (evidence: `backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultPersistenceAdapter.java`)
- Vault mapper → Vault domain: maps domain (evidence: `backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultMapper.java`)
- Vault mapper → Vault entity: maps entity (evidence: `backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultMapper.java`)
- JPA repository → Vault entity: stores (evidence: `backend/src/main/java/com/securevault/backend/vault/infrastructure/persistence/VaultJpaRepository.java`)
- JPA repository → PostgreSQL: persists
