# assmaalibakir/foodtrack-groupe-d architecture

> Architecture diagram of the GitHub repository assmaalibakir/foodtrack-groupe-d, 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/assmaalibakir/foodtrack-groupe-d
- Repository: https://github.com/assmaalibakir/foodtrack-groupe-d

## Overview

FoodTrack’s repository defines and deploys its GCP/GKE platform: Terraform provisions network, compute, storage and GitHub identity federation; Kubernetes manifests describe the application and its dev, test and prod environments. The documented user-facing components are an API, quality portal and Redis cache. The README establishes the main module and deployment relationships, but source excerpts were limited to a standalone health-check script, so application-level calls and runtime data flows are not inferred.

Main entry points: [`k8s/base/kustomization.yaml`](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/kustomization.yaml) (Shared manifests), [`terraform/main.tf`](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/terraform/main.tf) (Terraform root), [`k8s/base/services.yaml`](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/services.yaml) (Kubernetes services), [`.github/workflows/deploy.yml`](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/.github/workflows/deploy.yml) (Cluster deployment workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_provisioning["GCP provisioning"]
  node_terraform["Terraform root<br/>[main.tf]"]
  node_network["VPC and networking<br/>[main.tf]"]
  node_compute["GKE and bastion<br/>[main.tf]"]
  node_storage["Registry and buckets<br/>[main.tf]"]
  node_wif["GitHub federation<br/>[main.tf]"]
end

subgraph group_delivery["Deployment and identity"]
  node_deploy["Cluster deployment workflow<br/>[deploy.yml]"]
end

subgraph group_kubernetes["Kubernetes platform"]
  node_cluster["GKE cluster<br/>[workloads.yaml]"]
  node_base["Shared manifests<br/>[kustomization.yaml]"]
  node_overlays["Environment overlays<br/>[kustomization.yaml]"]
  node_workloads["Workloads and Redis<br/>[workloads.yaml]"]
  node_services["Kubernetes services<br/>[services.yaml]"]
  node_ingress["Ingress routing<br/>[ingress.yaml]"]
  node_hpa["Autoscaling policy<br/>[hpa.yaml]"]
end

subgraph group_application["FoodTrack components"]
  node_api["Sensor API<br/>[workloads.yaml]"]
  node_portal["Quality portal<br/>[workloads.yaml]"]
  node_redis[("Reading cache<br/>[workloads.yaml]")]
end

node_operator(("Platform operator"))
node_gcp["Google Cloud"]
node_github(("GitHub Actions"))
node_visitor(("Portal/API user"))

node_operator -->|"applies configuration"| node_terraform
node_terraform -->|"instantiates module"| node_network
node_terraform -->|"instantiates module"| node_compute
node_terraform -->|"instantiates module"| node_storage
node_terraform -->|"instantiates module"| node_wif
node_network -->|"provisions networking"| node_gcp
node_compute -->|"provisions cluster"| node_gcp
node_storage -->|"provisions storage"| node_gcp
node_wif -->|"configures federation"| node_gcp
node_github -->|"authenticates through"| node_wif
node_github -->|"runs"| node_deploy
node_deploy -->|"publishes images"| node_storage
node_deploy -->|"deploys workloads"| node_cluster
node_base -->|"includes manifests"| node_workloads
node_base -->|"includes manifests"| node_services
node_base -->|"includes manifests"| node_ingress
node_base -->|"includes manifests"| node_hpa
node_overlays -->|"customizes base"| node_base
node_cluster -->|"runs manifests"| node_base
node_services -->|"exposes"| node_api
node_services -->|"exposes"| node_portal
node_services -->|"exposes"| node_redis
node_ingress -->|"routes traffic"| node_services
node_visitor -->|"requests content"| node_ingress
node_hpa -->|"scales replicas"| node_workloads

click node_terraform "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/terraform/main.tf"
click node_network "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/terraform/modules/reseau/main.tf"
click node_compute "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/terraform/modules/compute/main.tf"
click node_storage "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/terraform/modules/stockage/main.tf"
click node_wif "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/terraform/modules/wif-github/main.tf"
click node_deploy "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/.github/workflows/deploy.yml"
click node_cluster "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/workloads.yaml"
click node_base "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/kustomization.yaml"
click node_overlays "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/overlays/dev/kustomization.yaml"
click node_workloads "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/workloads.yaml"
click node_services "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/services.yaml"
click node_ingress "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/ingress.yaml"
click node_hpa "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/hpa.yaml"
click node_api "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/workloads.yaml"
click node_portal "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/workloads.yaml"
click node_redis "https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/workloads.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,node_network,node_compute,node_storage,node_wif,node_visitor toneBlue
class node_deploy toneAmber
class node_cluster,node_base,node_overlays,node_workloads,node_services,node_ingress,node_hpa toneMint
class node_api,node_portal,node_redis toneRose
class node_operator,node_gcp,node_github toneIndigo
```

## Components

### GCP provisioning

- [Terraform root](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/terraform/main.tf): `terraform/main.tf`
- [VPC and networking](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/terraform/modules/reseau/main.tf): `terraform/modules/reseau/main.tf`
- [GKE and bastion](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/terraform/modules/compute/main.tf): `terraform/modules/compute/main.tf`
- [Registry and buckets](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/terraform/modules/stockage/main.tf): `terraform/modules/stockage/main.tf`
- [GitHub federation](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/terraform/modules/wif-github/main.tf): `terraform/modules/wif-github/main.tf`

### Deployment and identity

- [Cluster deployment workflow](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/.github/workflows/deploy.yml): `.github/workflows/deploy.yml`

### Kubernetes platform

- [GKE cluster](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/workloads.yaml): `k8s/base/workloads.yaml`
- [Shared manifests](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/kustomization.yaml): `k8s/base/kustomization.yaml`
- [Environment overlays](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/overlays/dev/kustomization.yaml): `k8s/overlays/dev/kustomization.yaml`
- [Workloads and Redis](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/workloads.yaml): `k8s/base/workloads.yaml`
- [Kubernetes services](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/services.yaml): `k8s/base/services.yaml`
- [Ingress routing](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/ingress.yaml): `k8s/base/ingress.yaml`
- [Autoscaling policy](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/hpa.yaml): `k8s/base/hpa.yaml`

### FoodTrack components

- [Sensor API](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/workloads.yaml): `k8s/base/workloads.yaml`
- [Quality portal](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/workloads.yaml): `k8s/base/workloads.yaml`
- [Reading cache](https://github.com/assmaalibakir/foodtrack-groupe-d/blob/main/k8s/base/workloads.yaml): `k8s/base/workloads.yaml`

### Other components

- **Platform operator**
- **Google Cloud**
- **GitHub Actions**
- **Portal/API user**

## Connections

- Platform operator → Terraform root: applies configuration
- Terraform root → VPC and networking: instantiates module
- Terraform root → GKE and bastion: instantiates module
- Terraform root → Registry and buckets: instantiates module
- Terraform root → GitHub federation: instantiates module
- VPC and networking → Google Cloud: provisions networking
- GKE and bastion → Google Cloud: provisions cluster
- Registry and buckets → Google Cloud: provisions storage
- GitHub federation → Google Cloud: configures federation
- GitHub Actions → GitHub federation: authenticates through
- GitHub Actions → Cluster deployment workflow: runs
- Cluster deployment workflow → Registry and buckets: publishes images
- Cluster deployment workflow → GKE cluster: deploys workloads
- Shared manifests → Workloads and Redis: includes manifests
- Shared manifests → Kubernetes services: includes manifests
- Shared manifests → Ingress routing: includes manifests
- Shared manifests → Autoscaling policy: includes manifests
- Environment overlays → Shared manifests: customizes base
- GKE cluster → Shared manifests: runs manifests
- Kubernetes services → Sensor API: exposes
- Kubernetes services → Quality portal: exposes
- Kubernetes services → Reading cache: exposes
- Ingress routing → Kubernetes services: routes traffic
- Portal/API user → Ingress routing: requests content
- Autoscaling policy → Workloads and Redis: scales replicas
