# abhignadumpala/task-tracker-3tier-devops architecture

> Architecture diagram of the GitHub repository abhignadumpala/task-tracker-3tier-devops, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/abhignadumpala/task-tracker-3tier-devops
- Repository: https://github.com/abhignadumpala/task-tracker-3tier-devops

## Overview

Task Tracker is a three-tier task-management app: a browser loads the React UI, which lists, creates, updates, and deletes tasks through a FastAPI API backed by PostgreSQL. The README also documents Kubernetes deployment and a CI/CD pipeline. Application behavior is grounded in sampled source; deployment and pipeline links use README descriptions and the repository tree, since those implementation files were not sampled.

Main entry points: [`backend/app/main.py`](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/backend/app/main.py) (FastAPI routes), [`k8s/postgres-deployment.yaml`](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/postgres-deployment.yaml) (Postgres deployment), [`frontend/nginx.conf`](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/frontend/nginx.conf) (Nginx proxy), [`.github/workflows/ci-cd.yml`](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/.github/workflows/ci-cd.yml) (GitHub Actions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_react_entry["React entry<br/>[main.jsx]"]
  node_task_ui["Task interface<br/>[App.jsx]"]
  node_nginx["Nginx proxy<br/>[nginx.conf]"]
end

subgraph group_api["Task API"]
  node_backend_api["FastAPI routes<br/>[main.py]"]
  node_task_schemas["Task schemas<br/>[schemas.py]"]
end

subgraph group_data["Persistence"]
  node_task_model["Task model<br/>[models.py]"]
  node_db_session["DB sessions<br/>[database.py]"]
  node_postgres[("PostgreSQL")]
end

subgraph group_platform["Platform delivery"]
  node_frontend_service["Frontend NodePort"]
  node_frontend_deploy["Frontend deployment"]
  node_backend_service["Backend service"]
  node_backend_deploy["Backend deployment"]
  node_postgres_service["Postgres service"]
  node_postgres_deploy["Postgres deployment"]
  node_postgres_pvc[("Postgres volume<br/>[postgres-pvc.yaml]")]
  node_postgres_secret["Postgres credentials"]
  node_actions["GitHub Actions<br/>[ci-cd.yml]"]
end

node_browser(("User browser"))
node_docker_hub[("Docker Hub")]
node_cluster{{"Kubernetes cluster"}}

node_browser -->|"opens app"| node_frontend_service
node_frontend_service -->|"routes traffic"| node_frontend_deploy
node_frontend_deploy -->|"serves app"| node_nginx
node_nginx -->|"serves bundle"| node_react_entry
node_react_entry -->|"renders"| node_task_ui
node_task_ui -->|"requests /api"| node_nginx
node_nginx -->|"proxies API"| node_backend_service
node_backend_service -->|"routes traffic"| node_backend_deploy
node_backend_deploy -->|"runs API"| node_backend_api
node_backend_api -->|"validates data"| node_task_schemas
node_backend_api -->|"queries tasks"| node_task_model
node_backend_api -->|"gets sessions"| node_db_session
node_db_session -->|"connects to"| node_postgres_service
node_postgres_service -->|"routes connection"| node_postgres_deploy
node_postgres_deploy -->|"stores tasks"| node_postgres
node_postgres_deploy -->|"uses volume"| node_postgres_pvc
node_postgres_deploy -->|"loads credentials"| node_postgres_secret
node_actions -.->|"publishes images"| node_docker_hub
node_actions -.->|"deploys app"| node_cluster

click node_react_entry "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/frontend/src/main.jsx"
click node_task_ui "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/frontend/src/App.jsx"
click node_nginx "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/frontend/nginx.conf"
click node_backend_api "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/backend/app/main.py"
click node_task_schemas "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/backend/app/schemas.py"
click node_task_model "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/backend/app/models.py"
click node_db_session "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/backend/app/database.py"
click node_frontend_service "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/frontend-service.yaml"
click node_frontend_deploy "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/frontend-deployment.yaml"
click node_backend_service "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/backend-service.yaml"
click node_backend_deploy "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/backend-deployment.yaml"
click node_postgres_service "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/postgres-service.yaml"
click node_postgres_deploy "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/postgres-deployment.yaml"
click node_postgres_pvc "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/postgres-pvc.yaml"
click node_postgres_secret "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/postgres-secret.yaml"
click node_actions "https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/.github/workflows/ci-cd.yml"

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_react_entry,node_task_ui,node_nginx,node_browser toneBlue
class node_backend_api,node_task_schemas,node_docker_hub toneAmber
class node_task_model,node_db_session,node_postgres toneMint
class node_frontend_service,node_frontend_deploy,node_backend_service,node_backend_deploy,node_postgres_service,node_postgres_deploy,node_postgres_pvc,node_postgres_secret,node_actions toneRose
class node_cluster toneIndigo
```

## Components

### Web client

- [React entry](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/frontend/src/main.jsx): `frontend/src/main.jsx`
- [Task interface](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Nginx proxy](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/frontend/nginx.conf): `frontend/nginx.conf`

### Task API

- [FastAPI routes](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/backend/app/main.py): `backend/app/main.py`
- [Task schemas](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/backend/app/schemas.py): `backend/app/schemas.py`

### Persistence

- [Task model](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/backend/app/models.py): `backend/app/models.py`
- [DB sessions](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/backend/app/database.py): `backend/app/database.py`
- **PostgreSQL**

### Platform delivery

- [Frontend NodePort](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/frontend-service.yaml): `k8s/frontend-service.yaml`
- [Frontend deployment](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/frontend-deployment.yaml): `k8s/frontend-deployment.yaml`
- [Backend service](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/backend-service.yaml): `k8s/backend-service.yaml`
- [Backend deployment](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/backend-deployment.yaml): `k8s/backend-deployment.yaml`
- [Postgres service](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/postgres-service.yaml): `k8s/postgres-service.yaml`
- [Postgres deployment](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/postgres-deployment.yaml): `k8s/postgres-deployment.yaml`
- [Postgres volume](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/postgres-pvc.yaml): `k8s/postgres-pvc.yaml`
- [Postgres credentials](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/k8s/postgres-secret.yaml): `k8s/postgres-secret.yaml`
- [GitHub Actions](https://github.com/abhignadumpala/task-tracker-3tier-devops/blob/main/.github/workflows/ci-cd.yml): `.github/workflows/ci-cd.yml`

### Other components

- **User browser**
- **Docker Hub**
- **Kubernetes cluster**

## Connections

- User browser → Frontend NodePort: opens app
- Frontend NodePort → Frontend deployment: routes traffic
- Frontend deployment → Nginx proxy: serves app
- Nginx proxy → React entry: serves bundle
- React entry → Task interface: renders
- Task interface → Nginx proxy: requests /api
- Nginx proxy → Backend service: proxies API
- Backend service → Backend deployment: routes traffic
- Backend deployment → FastAPI routes: runs API
- FastAPI routes → Task schemas: validates data
- FastAPI routes → Task model: queries tasks
- FastAPI routes → DB sessions: gets sessions
- DB sessions → Postgres service: connects to
- Postgres service → Postgres deployment: routes connection
- Postgres deployment → PostgreSQL: stores tasks
- Postgres deployment → Postgres volume: uses volume
- Postgres deployment → Postgres credentials: loads credentials
- GitHub Actions → Docker Hub: publishes images
- GitHub Actions → Kubernetes cluster: deploys app
