# hemanthvsp1/kanban_task_board architecture

> Architecture diagram of the GitHub repository hemanthvsp1/kanban_task_board, 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/hemanthvsp1/kanban_task_board
- Repository: https://github.com/hemanthvsp1/kanban_task_board

## Overview

Task Board is a React Kanban app for personal and shared team workspaces. A user enters the board, authenticates (including guest access), then creates and manages tasks, moves them across statuses, and uses assignments, labels, comments, activity, search, filters, and summary stats. The frontend accesses Supabase directly by default or can route supported requests through the optional Go API. Supabase Postgres and RLS persist and protect the data; the API verifies JWTs and runs queries in RLS-scoped transactions. The frontend excerpt is partial, so the documented capabilities are shown without inferring their individual call wiring.

Main entry points: [`src/App.tsx`](https://github.com/hemanthvsp1/kanban_task_board/blob/main/src/App.tsx) (Board experience), [`server/main.go`](https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/main.go) (Go API router), [`server/db/pool.go`](https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/db/pool.go) (RLS query pool), [`src/lib/supabase.ts`](https://github.com/hemanthvsp1/kanban_task_board/blob/main/src/lib/supabase.ts) (Authenticated API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Task Board UI"]
  node_app_entry["React entry<br/>[main.tsx]"]
  node_board_app["Board experience<br/>[App.tsx]"]
  node_api_client["Authenticated API client<br/>[supabase.ts]"]
end

subgraph group_supabase["Supabase Services"]
  node_supabase_client["Supabase client<br/>[supabase.ts]"]
  node_auth["Supabase Auth"]
  node_realtime["Board realtime"]
end

subgraph group_api["Optional Go API"]
  node_go_api["Go API router<br/>[main.go]"]
  node_jwt["JWT and CORS middleware<br/>[auth.go]"]
  node_task_routes["Task operations<br/>[tasks.go]"]
  node_comment_routes["Task comments<br/>[comments.go]"]
  node_activity_routes["Task activity<br/>[activity.go]"]
  node_workspace_routes["Members and labels<br/>[team_members.go]"]
  node_pool["RLS query pool<br/>[pool.go]"]
end

subgraph group_data["Persistent Data"]
  node_schema["Board schema and RLS<br/>[schema.sql]"]
  node_postgres[("Supabase Postgres")]
end

node_user(("Board user"))

node_user -->|"opens app"| node_app_entry
node_app_entry -->|"renders"| node_board_app
node_board_app -->|"uses auth and data"| node_supabase_client
node_supabase_client -->|"authenticates"| node_auth
node_board_app -->|"signs in"| node_auth
node_board_app -->|"subscribes"| node_realtime
node_realtime -->|"streams changes"| node_postgres
node_board_app -->|"reads and writes"| node_postgres
node_schema -->|"defines tables and RLS"| node_postgres
node_board_app -.->|"optional API calls"| node_api_client
node_api_client -->|"gets session JWT"| node_auth
node_api_client -.->|"sends requests"| node_go_api
node_go_api -->|"protects routes"| node_jwt
node_go_api -->|"dispatches tasks"| node_task_routes
node_go_api -->|"dispatches comments"| node_comment_routes
node_go_api -->|"dispatches activity"| node_activity_routes
node_go_api -->|"dispatches members and labels"| node_workspace_routes
node_jwt -->|"verifies Supabase JWT"| node_auth
node_task_routes -->|"queries tasks"| node_pool
node_comment_routes -->|"queries comments"| node_pool
node_activity_routes -->|"queries activity"| node_pool
node_workspace_routes -->|"queries workspace data"| node_pool
node_pool -->|"runs RLS transactions"| node_postgres

click node_app_entry "https://github.com/hemanthvsp1/kanban_task_board/blob/main/src/main.tsx"
click node_board_app "https://github.com/hemanthvsp1/kanban_task_board/blob/main/src/App.tsx"
click node_supabase_client "https://github.com/hemanthvsp1/kanban_task_board/blob/main/src/lib/supabase.ts"
click node_schema "https://github.com/hemanthvsp1/kanban_task_board/blob/main/supabase/schema.sql"
click node_api_client "https://github.com/hemanthvsp1/kanban_task_board/blob/main/src/lib/supabase.ts"
click node_go_api "https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/main.go"
click node_jwt "https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/middleware/auth.go"
click node_task_routes "https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/handlers/tasks.go"
click node_comment_routes "https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/handlers/comments.go"
click node_activity_routes "https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/handlers/activity.go"
click node_workspace_routes "https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/handlers/team_members.go"
click node_pool "https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/db/pool.go"

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_entry,node_board_app,node_api_client,node_user toneBlue
class node_supabase_client,node_auth,node_realtime toneAmber
class node_go_api,node_jwt,node_task_routes,node_comment_routes,node_activity_routes,node_workspace_routes,node_pool toneMint
class node_schema,node_postgres toneRose
```

## Components

### Task Board UI

- [React entry](https://github.com/hemanthvsp1/kanban_task_board/blob/main/src/main.tsx): `src/main.tsx`
- [Board experience](https://github.com/hemanthvsp1/kanban_task_board/blob/main/src/App.tsx): `src/App.tsx`
- [Authenticated API client](https://github.com/hemanthvsp1/kanban_task_board/blob/main/src/lib/supabase.ts): `src/lib/supabase.ts`

### Supabase Services

- [Supabase client](https://github.com/hemanthvsp1/kanban_task_board/blob/main/src/lib/supabase.ts): `src/lib/supabase.ts`
- **Supabase Auth**
- **Board realtime**

### Optional Go API

- [Go API router](https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/main.go): `server/main.go`
- [JWT and CORS middleware](https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/middleware/auth.go): `server/middleware/auth.go`
- [Task operations](https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/handlers/tasks.go): `server/handlers/tasks.go`
- [Task comments](https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/handlers/comments.go): `server/handlers/comments.go`
- [Task activity](https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/handlers/activity.go): `server/handlers/activity.go`
- [Members and labels](https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/handlers/team_members.go): `server/handlers/team_members.go`
- [RLS query pool](https://github.com/hemanthvsp1/kanban_task_board/blob/main/server/db/pool.go): `server/db/pool.go`

### Persistent Data

- [Board schema and RLS](https://github.com/hemanthvsp1/kanban_task_board/blob/main/supabase/schema.sql): `supabase/schema.sql`
- **Supabase Postgres**

### Other components

- **Board user**

## Connections

- Board user → React entry: opens app
- React entry → Board experience: renders
- Board experience → Supabase client: uses auth and data
- Supabase client → Supabase Auth: authenticates
- Board experience → Supabase Auth: signs in
- Board experience → Board realtime: subscribes
- Board realtime → Supabase Postgres: streams changes
- Board experience → Supabase Postgres: reads and writes
- Board schema and RLS → Supabase Postgres: defines tables and RLS
- Board experience → Authenticated API client: optional API calls
- Authenticated API client → Supabase Auth: gets session JWT
- Authenticated API client → Go API router: sends requests
- Go API router → JWT and CORS middleware: protects routes
- Go API router → Task operations: dispatches tasks
- Go API router → Task comments: dispatches comments
- Go API router → Task activity: dispatches activity
- Go API router → Members and labels: dispatches members and labels
- JWT and CORS middleware → Supabase Auth: verifies Supabase JWT
- Task operations → RLS query pool: queries tasks
- Task comments → RLS query pool: queries comments
- Task activity → RLS query pool: queries activity
- Members and labels → RLS query pool: queries workspace data
- RLS query pool → Supabase Postgres: runs RLS transactions
