# foodtrack-groupe-a/projet-ajc-foodtrack architecture

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

- Interactive diagram: https://gitdiagram.com/foodtrack-groupe-a/projet-ajc-foodtrack
- Repository: https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack

## Overview

Ce dépôt fournit l’infrastructure et les manifestes Kubernetes du projet final Foodtrack, plutôt que le code de l’application. Le parcours visible est celui d’un opérateur qui provisionne des ressources cloud avec Terraform puis déploie un portail qualité, une API capteurs et un cache de relevés sur Kubernetes. Le README documente Kustomize pour séparer les environnements, mais aucun fichier Kustomize n’apparaît dans l’arborescence. Les extraits de source étant absents, les liens entre ressources et services ne sont pas déduits des seuls noms de fichiers.

Main entry points: [`labs/projet-final/terraform/main.tf`](https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/terraform/main.tf) (Configuration racine), [`labs/projet-final/manifests/00-namespace.yaml`](https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/00-namespace.yaml) (Namespace)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_terraform["Infrastructure Terraform"]
  node_terraform_root["Configuration racine<br/>[main.tf]"]
  node_network["Réseau<br/>[main.tf]"]
  node_compute["Calcul<br/>[main.tf]"]
  node_storage["Stockage<br/>[main.tf]"]
end

subgraph group_k8s["Plateforme Kubernetes"]
  node_namespace["Namespace<br/>[00-namespace.yaml]"]
  node_config["Configuration<br/>[01-configmap.yaml]"]
  node_secret["Secret exemple"]
  node_services["Services Kubernetes<br/>[06-services.yaml]"]
  node_storageclass["Classe stockage HDD"]
end

subgraph group_workloads["Services Foodtrack"]
  node_portal["Portail qualité"]
  node_sensor_api["API capteurs"]
  node_readings_cache[("Cache relevés")]
end

node_operator(("Opérateur cloud"))
node_cloud["Cloud"]

node_operator -->|"configure"| node_terraform_root
node_terraform_root -->|"provisionne"| node_cloud
node_operator -->|"déploie les manifestes"| node_namespace

click node_terraform_root "https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/terraform/main.tf"
click node_network "https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/terraform/modules/reseau/main.tf"
click node_compute "https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/terraform/modules/compute/main.tf"
click node_storage "https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/terraform/modules/stockage/main.tf"
click node_namespace "https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/00-namespace.yaml"
click node_config "https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/01-configmap.yaml"
click node_secret "https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/02-secret-exemple.yaml"
click node_portal "https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/03-deployment-portail-qualite.yaml"
click node_sensor_api "https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/04-deployment-api-capteurs.yaml"
click node_readings_cache "https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/05-statefulset-cache-releves.yaml"
click node_services "https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/06-services.yaml"
click node_storageclass "https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/07-storageclass-hdd.yaml"

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_terraform_root,node_network,node_compute,node_storage toneBlue
class node_namespace,node_config,node_secret,node_services,node_storageclass toneAmber
class node_portal,node_sensor_api,node_readings_cache toneMint
class node_operator,node_cloud toneIndigo
```

## Components

### Infrastructure Terraform

- [Configuration racine](https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/terraform/main.tf): `labs/projet-final/terraform/main.tf`
- [Réseau](https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/terraform/modules/reseau/main.tf): `labs/projet-final/terraform/modules/reseau/main.tf`
- [Calcul](https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/terraform/modules/compute/main.tf): `labs/projet-final/terraform/modules/compute/main.tf`
- [Stockage](https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/terraform/modules/stockage/main.tf): `labs/projet-final/terraform/modules/stockage/main.tf`

### Plateforme Kubernetes

- [Namespace](https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/00-namespace.yaml): `labs/projet-final/manifests/00-namespace.yaml`
- [Configuration](https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/01-configmap.yaml): `labs/projet-final/manifests/01-configmap.yaml`
- [Secret exemple](https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/02-secret-exemple.yaml): `labs/projet-final/manifests/02-secret-exemple.yaml`
- [Services Kubernetes](https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/06-services.yaml): `labs/projet-final/manifests/06-services.yaml`
- [Classe stockage HDD](https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/07-storageclass-hdd.yaml): `labs/projet-final/manifests/07-storageclass-hdd.yaml`

### Services Foodtrack

- [Portail qualité](https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/03-deployment-portail-qualite.yaml): `labs/projet-final/manifests/03-deployment-portail-qualite.yaml`
- [API capteurs](https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/04-deployment-api-capteurs.yaml): `labs/projet-final/manifests/04-deployment-api-capteurs.yaml`
- [Cache relevés](https://github.com/foodtrack-groupe-a/projet-ajc-foodtrack/blob/main/labs/projet-final/manifests/05-statefulset-cache-releves.yaml): `labs/projet-final/manifests/05-statefulset-cache-releves.yaml`

### Other components

- **Opérateur cloud**
- **Cloud**

## Connections

- Opérateur cloud → Configuration racine: configure
- Configuration racine → Cloud: provisionne
- Opérateur cloud → Namespace: déploie les manifestes
