# londheshubham153/three-tier-eks-iac architecture

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

- Interactive diagram: https://gitdiagram.com/londheshubham153/three-tier-eks-iac
- Repository: https://github.com/londheshubham153/three-tier-eks-iac

## Overview

This repository implements a browser-based to-do application and the AWS/EKS infrastructure and Kubernetes resources intended to run it. The user workflow is to load tasks, add them, toggle completion, or delete them; frontend state handlers call an HTTP service, which reaches the API routes and MongoDB model. The README documents cluster autoscaling, load balancing, and Grafana monitoring as deployment capabilities. Infrastructure wiring is summarized from filenames and README instructions; Terraform and manifest source contents were not sampled, so uncertain resource-level links are omitted.

Main entry points: [`terraform/eks.tf`](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/terraform/eks.tf) (EKS cluster), [`k8s_manifests/mongo`](https://github.com/londheshubham153/three-tier-eks-iac/tree/main/k8s_manifests/mongo) (MongoDB), [`app/backend/index.js`](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/backend/index.js) (API server), [`k8s_manifests/full_stack_lb.yaml`](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/k8s_manifests/full_stack_lb.yaml) (Full-stack load balancer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["To-do frontend"]
  node_app["Task interface<br/>[App.js]"]
  node_task_handlers["Task handlers<br/>[Tasks.js]"]
  node_task_http["Task HTTP service<br/>[taskServices.js]"]
  node_frontend_entry["React entry<br/>[index.js]"]
end

subgraph group_api["Task API"]
  node_backend_entry["API server<br/>[index.js]"]
  node_task_routes["Task routes<br/>[tasks.js]"]
end

subgraph group_data["Task persistence"]
  node_db_connect["DB connection<br/>[db.js]"]
  node_task_model["Task model<br/>[task.js]"]
  node_mongo[("MongoDB")]
end

subgraph group_cluster["Kubernetes application"]
  node_frontend_k8s["Frontend deployment"]
  node_frontend_svc["Frontend service"]
  node_backend_k8s["Backend deployment"]
  node_backend_svc["Backend service"]
  node_mongo_svc["Mongo service<br/>[service.yaml]"]
  node_ingress_lb["Full-stack load balancer<br/>[full_stack_lb.yaml]"]
end

subgraph group_cloud["AWS infrastructure"]
  node_eks["EKS cluster<br/>[eks.tf]"]
  node_network["VPC networking<br/>[vpc.tf]"]
  node_autoscaler["Cluster autoscaler"]
  node_lb_controller["LB controller"]
  node_monitoring["Monitoring<br/>[monitoring.tf]"]
end

node_user(("User"))
node_browser(("Browser"))
node_grafana["Grafana"]
node_aws["AWS"]

node_user -->|"uses"| node_browser
node_browser -->|"loads"| node_frontend_entry
node_frontend_entry -->|"renders"| node_app
node_app -->|"invokes"| node_task_handlers
node_task_handlers -->|"calls"| node_task_http
node_task_http -->|"HTTP requests"| node_backend_entry
node_backend_entry -->|"mounts"| node_task_routes
node_backend_entry -->|"connects"| node_db_connect
node_task_routes -->|"queries"| node_task_model
node_db_connect -->|"connects"| node_mongo
node_task_model -->|"reads/writes"| node_mongo
node_browser -->|"requests app"| node_ingress_lb
node_ingress_lb -->|"routes traffic"| node_frontend_svc
node_frontend_svc -->|"targets"| node_frontend_k8s
node_backend_svc -->|"targets"| node_backend_k8s
node_mongo_svc -->|"targets"| node_mongo
node_eks -->|"runs"| node_frontend_k8s
node_eks -->|"runs"| node_backend_k8s
node_eks -->|"runs"| node_mongo
node_network -->|"network for"| node_eks
node_aws -->|"hosts"| node_eks
node_aws -->|"provides"| node_network
node_eks -.->|"supports"| node_autoscaler
node_eks -.->|"runs"| node_lb_controller
node_lb_controller -.->|"provisions"| node_ingress_lb
node_eks -.->|"hosts"| node_monitoring
node_monitoring -.->|"exposes"| node_grafana

click node_app "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/frontend/src/App.js"
click node_task_handlers "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/frontend/src/Tasks.js"
click node_task_http "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/frontend/src/services/taskServices.js"
click node_frontend_entry "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/frontend/src/index.js"
click node_backend_entry "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/backend/index.js"
click node_task_routes "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/backend/routes/tasks.js"
click node_db_connect "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/backend/db.js"
click node_task_model "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/backend/models/task.js"
click node_mongo "https://github.com/londheshubham153/three-tier-eks-iac/tree/main/k8s_manifests/mongo"
click node_frontend_k8s "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/k8s_manifests/frontend-deployment.yaml"
click node_frontend_svc "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/k8s_manifests/frontend-service.yaml"
click node_backend_k8s "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/k8s_manifests/backend-deployment.yaml"
click node_backend_svc "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/k8s_manifests/backend-service.yaml"
click node_mongo_svc "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/k8s_manifests/mongo/service.yaml"
click node_ingress_lb "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/k8s_manifests/full_stack_lb.yaml"
click node_eks "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/terraform/eks.tf"
click node_network "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/terraform/vpc.tf"
click node_autoscaler "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/terraform/autoscaler-manifest.tf"
click node_lb_controller "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/terraform/helm-load-balancer-controller.tf"
click node_monitoring "https://github.com/londheshubham153/three-tier-eks-iac/blob/main/terraform/monitoring.tf"

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_task_handlers,node_task_http,node_frontend_entry,node_user,node_browser toneBlue
class node_backend_entry,node_task_routes toneAmber
class node_db_connect,node_task_model,node_mongo toneMint
class node_frontend_k8s,node_frontend_svc,node_backend_k8s,node_backend_svc,node_mongo_svc,node_ingress_lb toneRose
class node_eks,node_network,node_autoscaler,node_lb_controller,node_monitoring,node_grafana,node_aws toneIndigo
```

## Components

### To-do frontend

- [Task interface](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/frontend/src/App.js): `app/frontend/src/App.js`
- [Task handlers](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/frontend/src/Tasks.js): `app/frontend/src/Tasks.js`
- [Task HTTP service](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/frontend/src/services/taskServices.js): `app/frontend/src/services/taskServices.js`
- [React entry](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/frontend/src/index.js): `app/frontend/src/index.js`

### Task API

- [API server](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/backend/index.js): `app/backend/index.js`
- [Task routes](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/backend/routes/tasks.js): `app/backend/routes/tasks.js`

### Task persistence

- [DB connection](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/backend/db.js): `app/backend/db.js`
- [Task model](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/app/backend/models/task.js): `app/backend/models/task.js`
- [MongoDB](https://github.com/londheshubham153/three-tier-eks-iac/tree/main/k8s_manifests/mongo): `k8s_manifests/mongo`

### Kubernetes application

- [Frontend deployment](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/k8s_manifests/frontend-deployment.yaml): `k8s_manifests/frontend-deployment.yaml`
- [Frontend service](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/k8s_manifests/frontend-service.yaml): `k8s_manifests/frontend-service.yaml`
- [Backend deployment](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/k8s_manifests/backend-deployment.yaml): `k8s_manifests/backend-deployment.yaml`
- [Backend service](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/k8s_manifests/backend-service.yaml): `k8s_manifests/backend-service.yaml`
- [Mongo service](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/k8s_manifests/mongo/service.yaml): `k8s_manifests/mongo/service.yaml`
- [Full-stack load balancer](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/k8s_manifests/full_stack_lb.yaml): `k8s_manifests/full_stack_lb.yaml`

### AWS infrastructure

- [EKS cluster](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/terraform/eks.tf): `terraform/eks.tf`
- [VPC networking](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/terraform/vpc.tf): `terraform/vpc.tf`
- [Cluster autoscaler](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/terraform/autoscaler-manifest.tf): `terraform/autoscaler-manifest.tf`
- [LB controller](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/terraform/helm-load-balancer-controller.tf): `terraform/helm-load-balancer-controller.tf`
- [Monitoring](https://github.com/londheshubham153/three-tier-eks-iac/blob/main/terraform/monitoring.tf): `terraform/monitoring.tf`

### Other components

- **User**
- **Browser**
- **Grafana**
- **AWS**

## Connections

- User → Browser: uses
- Browser → React entry: loads
- React entry → Task interface: renders
- Task interface → Task handlers: invokes
- Task handlers → Task HTTP service: calls
- Task HTTP service → API server: HTTP requests
- API server → Task routes: mounts
- API server → DB connection: connects
- Task routes → Task model: queries
- DB connection → MongoDB: connects
- Task model → MongoDB: reads/writes
- Browser → Full-stack load balancer: requests app
- Full-stack load balancer → Frontend service: routes traffic
- Frontend service → Frontend deployment: targets
- Backend service → Backend deployment: targets
- Mongo service → MongoDB: targets
- EKS cluster → Frontend deployment: runs
- EKS cluster → Backend deployment: runs
- EKS cluster → MongoDB: runs
- VPC networking → EKS cluster: network for
- AWS → EKS cluster: hosts
- AWS → VPC networking: provides
- EKS cluster → Cluster autoscaler: supports
- EKS cluster → LB controller: runs
- LB controller → Full-stack load balancer: provisions
- EKS cluster → Monitoring: hosts
- Monitoring → Grafana: exposes
