# vardhan655/fluid_ai_assignment architecture

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

- Interactive diagram: https://gitdiagram.com/vardhan655/fluid_ai_assignment
- Repository: https://github.com/vardhan655/fluid_ai_assignment

## Overview

This is a full-stack task board: users create and manage tasks, filter or organize them in list/Kanban views, request AI-generated subtasks, and track completion. The React app owns task state and invokes a centralized API client; the FastAPI backend provides task endpoints, validation, business logic, and persistent storage. README documentation supplies the backend layering and persistence relationships; backend source was not sampled, so those links reflect documented architecture rather than inspected calls.

Main entry points: [`frontend/src/App.jsx`](https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/App.jsx) (App state), [`backend/main.py`](https://github.com/vardhan655/fluid_ai_assignment/blob/main/backend/main.py) (Task API routes), [`frontend/src/components/KanbanBoard.jsx`](https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/KanbanBoard.jsx) (Kanban board), [`frontend/src/services/api.js`](https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/services/api.js) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Task Board UI"]
  node_app["App state<br/>[App.jsx]"]
  node_task_input["Task input<br/>[TaskInput.jsx]"]
  node_filters["Search and filters<br/>[FilterBar.jsx]"]
  node_task_list["List view<br/>[TaskList.jsx]"]
  node_kanban["Kanban board<br/>[KanbanBoard.jsx]"]
  node_task_card["Task card<br/>[TaskCard.jsx]"]
  node_progress["Progress indicator"]
  node_toast["Notifications<br/>[Toast.jsx]"]
  node_api_client["API client<br/>[api.js]"]
  node_entry["React entry<br/>[main.jsx]"]
end

subgraph group_api["Backend API"]
  node_routes["Task API routes<br/>[main.py]"]
  node_schemas["Request validation<br/>[schemas.py]"]
end

subgraph group_logic["Task Services"]
  node_services["Task and AI logic<br/>[services.py]"]
end

subgraph group_storage["Persistence"]
  node_models[("Task storage<br/>[models.py]")]
end

node_user(("Task user"))

node_user -->|"uses"| node_app
node_entry -->|"renders"| node_app
node_app -->|"renders"| node_task_input
node_app -->|"renders"| node_filters
node_app -->|"renders"| node_task_list
node_app -->|"renders"| node_kanban
node_app -->|"renders"| node_progress
node_app -->|"renders"| node_toast
node_kanban -->|"renders"| node_task_card
node_app -->|"calls"| node_api_client
node_api_client -->|"sends HTTP requests"| node_routes
node_routes -->|"validates with"| node_schemas
node_routes -->|"delegates logic"| node_services
node_services -->|"uses storage"| node_models

click node_app "https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/App.jsx"
click node_task_input "https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/TaskInput.jsx"
click node_filters "https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/FilterBar.jsx"
click node_task_list "https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/TaskList.jsx"
click node_kanban "https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/KanbanBoard.jsx"
click node_task_card "https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/TaskCard.jsx"
click node_progress "https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/ProgressIndicator.jsx"
click node_toast "https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/Toast.jsx"
click node_api_client "https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/services/api.js"
click node_entry "https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/main.jsx"
click node_routes "https://github.com/vardhan655/fluid_ai_assignment/blob/main/backend/main.py"
click node_schemas "https://github.com/vardhan655/fluid_ai_assignment/blob/main/backend/schemas.py"
click node_services "https://github.com/vardhan655/fluid_ai_assignment/blob/main/backend/services.py"
click node_models "https://github.com/vardhan655/fluid_ai_assignment/blob/main/backend/models.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_app,node_task_input,node_filters,node_task_list,node_kanban,node_task_card,node_progress,node_toast,node_api_client,node_entry toneBlue
class node_routes,node_schemas toneAmber
class node_services toneMint
class node_models,node_user toneRose
```

## Components

### Task Board UI

- [App state](https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Task input](https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/TaskInput.jsx): `frontend/src/components/TaskInput.jsx`
- [Search and filters](https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/FilterBar.jsx): `frontend/src/components/FilterBar.jsx`
- [List view](https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/TaskList.jsx): `frontend/src/components/TaskList.jsx`
- [Kanban board](https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/KanbanBoard.jsx): `frontend/src/components/KanbanBoard.jsx`
- [Task card](https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/TaskCard.jsx): `frontend/src/components/TaskCard.jsx`
- [Progress indicator](https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/ProgressIndicator.jsx): `frontend/src/components/ProgressIndicator.jsx`
- [Notifications](https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/components/Toast.jsx): `frontend/src/components/Toast.jsx`
- [API client](https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`
- [React entry](https://github.com/vardhan655/fluid_ai_assignment/blob/main/frontend/src/main.jsx): `frontend/src/main.jsx`

### Backend API

- [Task API routes](https://github.com/vardhan655/fluid_ai_assignment/blob/main/backend/main.py): `backend/main.py`
- [Request validation](https://github.com/vardhan655/fluid_ai_assignment/blob/main/backend/schemas.py): `backend/schemas.py`

### Task Services

- [Task and AI logic](https://github.com/vardhan655/fluid_ai_assignment/blob/main/backend/services.py): `backend/services.py`

### Persistence

- [Task storage](https://github.com/vardhan655/fluid_ai_assignment/blob/main/backend/models.py): `backend/models.py`

### Other components

- **Task user**

## Connections

- Task user → App state: uses (evidence: `README.md`)
- React entry → App state: renders (evidence: `frontend/src/main.jsx`)
- App state → Task input: renders (evidence: `frontend/src/App.jsx`)
- App state → Search and filters: renders (evidence: `frontend/src/App.jsx`)
- App state → List view: renders (evidence: `frontend/src/App.jsx`)
- App state → Kanban board: renders (evidence: `frontend/src/App.jsx`)
- App state → Progress indicator: renders (evidence: `frontend/src/App.jsx`)
- App state → Notifications: renders (evidence: `frontend/src/App.jsx`)
- Kanban board → Task card: renders (evidence: `frontend/src/components/KanbanBoard.jsx`)
- App state → API client: calls (evidence: `frontend/src/App.jsx`)
- API client → Task API routes: sends HTTP requests (evidence: `frontend/src/services/api.js`)
- Task API routes → Request validation: validates with (evidence: `README.md`)
- Task API routes → Task and AI logic: delegates logic (evidence: `README.md`)
- Task and AI logic → Task storage: uses storage (evidence: `README.md`)
