# lina123-alt/cryptovault architecture

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

- Interactive diagram: https://gitdiagram.com/lina123-alt/cryptovault
- Repository: https://github.com/lina123-alt/cryptovault

## Overview

CryptoVault est une application Flask de chiffrement de données client et de contrôle d’accès par rôles. Le parcours principal passe par les routes API : authentification, vérification des permissions, puis lecture ou écriture des données sensibles chiffrées; les lectures masquent les champs pour les rôles sans droit de déchiffrement. L’application comprend aussi une interface web, la gestion des utilisateurs et des clés, leur rotation, et les journaux d’audit. Les relations suivent les appels visibles dans les extraits; l’implémentation du journal d’audit n’a pas été échantillonnée.

Main entry points: [`app/routes/admin.py`](https://github.com/lina123-alt/cryptovault/blob/main/app/routes/admin.py) (Routes API), [`app/rbac/rbac_manager.py`](https://github.com/lina123-alt/cryptovault/blob/main/app/rbac/rbac_manager.py) (Gestion RBAC), [`app/models/models.py`](https://github.com/lina123-alt/cryptovault/blob/main/app/models/models.py) (Modèles métier), [`app/crypto/key_rotation.py`](https://github.com/lina123-alt/cryptovault/blob/main/app/crypto/key_rotation.py) (Rotation clés)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Interface web"]
  node_web_routes["Routes web<br/>[web.py]"]
  node_web_views["Pages web"]
end

subgraph group_access["Accès et administration"]
  node_admin_routes["Routes API<br/>[admin.py]"]
  node_rbac_manager["Gestion RBAC<br/>[rbac_manager.py]"]
  node_permissions["Permissions<br/>[permissions.py]"]
end

subgraph group_crypto["Protection cryptographique"]
  node_crypto_engine["Moteur crypto<br/>[crypto_engine.py]"]
  node_rotation["Rotation clés<br/>[key_rotation.py]"]
end

subgraph group_storage["Données et audit"]
  node_models["Modèles métier<br/>[models.py]"]
  node_database[("Base relationnelle<br/>[__init__.py]")]
  node_audit["Journal d’audit<br/>[audit_logger.py]"]
end

node_user(("Utilisateur"))

node_user -->|"demande pages"| node_web_routes
node_web_routes -->|"rend pages"| node_web_views
node_user -->|"appelle API"| node_admin_routes
node_admin_routes -->|"authentifie, crée"| node_rbac_manager
node_admin_routes -->|"vérifie droits"| node_permissions
node_rbac_manager -->|"consulte droits"| node_permissions
node_admin_routes -->|"lit, écrit"| node_models
node_rbac_manager -->|"gère utilisateurs, clés"| node_models
node_rotation -->|"lit, met à jour"| node_models
node_models -->|"persiste"| node_database
node_rbac_manager -->|"dérive clés"| node_crypto_engine
node_admin_routes -->|"chiffre, déchiffre, hache"| node_crypto_engine
node_rotation -->|"déchiffre, rechiffre"| node_crypto_engine
node_admin_routes -->|"déclenche rotation"| node_rotation
node_admin_routes -->|"journalise, consulte"| node_audit

click node_web_routes "https://github.com/lina123-alt/cryptovault/blob/main/app/routes/web.py"
click node_web_views "https://github.com/lina123-alt/cryptovault/tree/main/app/templates"
click node_admin_routes "https://github.com/lina123-alt/cryptovault/blob/main/app/routes/admin.py"
click node_rbac_manager "https://github.com/lina123-alt/cryptovault/blob/main/app/rbac/rbac_manager.py"
click node_permissions "https://github.com/lina123-alt/cryptovault/blob/main/app/rbac/permissions.py"
click node_crypto_engine "https://github.com/lina123-alt/cryptovault/blob/main/app/crypto/crypto_engine.py"
click node_rotation "https://github.com/lina123-alt/cryptovault/blob/main/app/crypto/key_rotation.py"
click node_models "https://github.com/lina123-alt/cryptovault/blob/main/app/models/models.py"
click node_database "https://github.com/lina123-alt/cryptovault/blob/main/app/models/__init__.py"
click node_audit "https://github.com/lina123-alt/cryptovault/blob/main/app/logs/audit_logger.py"

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_web_routes,node_web_views toneBlue
class node_admin_routes,node_rbac_manager,node_permissions toneAmber
class node_crypto_engine,node_rotation toneMint
class node_models,node_database,node_audit toneRose
class node_user toneIndigo
```

## Components

### Interface web

- [Routes web](https://github.com/lina123-alt/cryptovault/blob/main/app/routes/web.py): `app/routes/web.py`
- [Pages web](https://github.com/lina123-alt/cryptovault/tree/main/app/templates): `app/templates`

### Accès et administration

- [Routes API](https://github.com/lina123-alt/cryptovault/blob/main/app/routes/admin.py): `app/routes/admin.py`
- [Gestion RBAC](https://github.com/lina123-alt/cryptovault/blob/main/app/rbac/rbac_manager.py): `app/rbac/rbac_manager.py`
- [Permissions](https://github.com/lina123-alt/cryptovault/blob/main/app/rbac/permissions.py): `app/rbac/permissions.py`

### Protection cryptographique

- [Moteur crypto](https://github.com/lina123-alt/cryptovault/blob/main/app/crypto/crypto_engine.py): `app/crypto/crypto_engine.py`
- [Rotation clés](https://github.com/lina123-alt/cryptovault/blob/main/app/crypto/key_rotation.py): `app/crypto/key_rotation.py`

### Données et audit

- [Modèles métier](https://github.com/lina123-alt/cryptovault/blob/main/app/models/models.py): `app/models/models.py`
- [Base relationnelle](https://github.com/lina123-alt/cryptovault/blob/main/app/models/__init__.py): `app/models/__init__.py`
- [Journal d’audit](https://github.com/lina123-alt/cryptovault/blob/main/app/logs/audit_logger.py): `app/logs/audit_logger.py`

### Other components

- **Utilisateur**

## Connections

- Utilisateur → Routes web: demande pages
- Routes web → Pages web: rend pages
- Utilisateur → Routes API: appelle API
- Routes API → Gestion RBAC: authentifie, crée
- Routes API → Permissions: vérifie droits
- Gestion RBAC → Permissions: consulte droits
- Routes API → Modèles métier: lit, écrit
- Gestion RBAC → Modèles métier: gère utilisateurs, clés
- Rotation clés → Modèles métier: lit, met à jour
- Modèles métier → Base relationnelle: persiste
- Gestion RBAC → Moteur crypto: dérive clés
- Routes API → Moteur crypto: chiffre, déchiffre, hache
- Rotation clés → Moteur crypto: déchiffre, rechiffre
- Routes API → Rotation clés: déclenche rotation
- Routes API → Journal d’audit: journalise, consulte
