# xenon110/task_management_bkm architecture

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

- Interactive diagram: https://gitdiagram.com/xenon110/task_management_bkm
- Repository: https://github.com/xenon110/task_management_bkm

## Overview

This is a workforce and project-management application: users sign in, enter a routed workspace, and manage tasks, projects, teams, and attendance. Zustand stores hold domain state and connect several workflows to Supabase; the attendance experience also includes desktop-device support. The graph reflects explicit route, import, and call evidence. Several listed features have only file-tree or SOURCE INDEX support, so their internal interactions are not expanded.

Main entry points: [`src/App.tsx`](https://github.com/xenon110/task_management_bkm/blob/main/src/App.tsx) (Router), [`src/store/useTaskStore.ts`](https://github.com/xenon110/task_management_bkm/blob/main/src/store/useTaskStore.ts) (Task State), [`src/store/useAuthStore.ts`](https://github.com/xenon110/task_management_bkm/blob/main/src/store/useAuthStore.ts) (Authentication State), [`src/store/useAttendanceStore.ts`](https://github.com/xenon110/task_management_bkm/blob/main/src/store/useAttendanceStore.ts) (Attendance State)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_app["Router<br/>[App.tsx]"]
  node_layout["Workspace Layout<br/>[MainLayout.tsx]"]
  node_login["Sign In<br/>[LoginPage.tsx]"]
  node_dashboard["Dashboard<br/>[DashboardPage.tsx]"]
end

subgraph group_work["Work Management"]
  node_tasks["Task Views<br/>[TasksPage.tsx]"]
  node_taskpanel["Task Details"]
  node_board["Board View<br/>[BoardView.tsx]"]
  node_projects["Project Views<br/>[ProjectsPage.tsx]"]
end

subgraph group_people["People and Attendance"]
  node_teams["Team Management<br/>[TeamsPage.tsx]"]
  node_member["Member Details"]
  node_attendance["Attendance<br/>[AttendancePage.tsx]"]
  node_employee["Employee Data<br/>[employeeDataMap.ts]"]
end

subgraph group_state["State and Services"]
  node_projectstore["Project State<br/>[useProjectStore.ts]"]
  node_taskstore["Task State<br/>[useTaskStore.ts]"]
  node_goalstore["Goal State<br/>[useGoalStore.ts]"]
  node_attstore["Attendance State"]
  node_auth["Authentication State<br/>[useAuthStore.ts]"]
  node_workspace["Workspace State"]
  node_permissions["Role Permissions<br/>[usePermissions.ts]"]
end

node_user(("User"))
node_supabase[("Supabase")]
node_attendancefn["Attendance Functions<br/>[index.ts]"]
node_electron["Desktop Bridge<br/>[preload.ts]"]
node_identity["Device Identity<br/>[identity.ts]"]
node_electronmain["Desktop Main<br/>[main.ts]"]

node_user -->|"uses"| node_app
node_app -->|"checks session"| node_auth
node_app -->|"routes to"| node_login
node_app -->|"routes to"| node_layout
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_tasks
node_app -->|"routes to"| node_projects
node_app -->|"routes to"| node_teams
node_app -->|"routes to"| node_attendance
node_login -->|"uses"| node_auth
node_layout -->|"uses"| node_auth
node_layout -->|"uses"| node_taskstore
node_layout -->|"uses"| node_workspace
node_dashboard -->|"reads"| node_taskstore
node_dashboard -->|"reads"| node_projectstore
node_dashboard -->|"reads"| node_goalstore
node_tasks -->|"uses"| node_taskstore
node_tasks -->|"renders"| node_board
node_taskpanel -->|"uses"| node_taskstore
node_projects -->|"uses"| node_projectstore
node_projects -->|"uses"| node_taskstore
node_teams -->|"uses"| node_workspace
node_teams -->|"renders"| node_member
node_teams -->|"checks"| node_permissions
node_member -->|"uses"| node_attstore
node_member -->|"looks up"| node_employee
node_attendance -->|"uses"| node_attstore
node_attendance -->|"uses"| node_workspace
node_attendance -->|"looks up"| node_employee
node_auth -->|"queries"| node_supabase
node_workspace -->|"queries"| node_supabase
node_taskstore -->|"queries"| node_supabase
node_projectstore -->|"queries"| node_supabase
node_attstore -->|"queries"| node_supabase
node_auth -->|"updates"| node_workspace
node_auth -->|"uses"| node_taskstore
node_taskstore -.-> node_goalstore
node_attstore -.->|"invokes"| node_attendancefn
node_attstore -.->|"uses bridge"| node_electron
node_electronmain -->|"uses"| node_identity

click node_app "https://github.com/xenon110/task_management_bkm/blob/main/src/App.tsx"
click node_layout "https://github.com/xenon110/task_management_bkm/blob/main/src/layouts/MainLayout.tsx"
click node_login "https://github.com/xenon110/task_management_bkm/blob/main/src/pages/LoginPage.tsx"
click node_dashboard "https://github.com/xenon110/task_management_bkm/blob/main/src/pages/DashboardPage.tsx"
click node_tasks "https://github.com/xenon110/task_management_bkm/blob/main/src/pages/TasksPage.tsx"
click node_taskpanel "https://github.com/xenon110/task_management_bkm/blob/main/src/components/TaskDetailPanel.tsx"
click node_board "https://github.com/xenon110/task_management_bkm/blob/main/src/components/BoardView.tsx"
click node_projects "https://github.com/xenon110/task_management_bkm/blob/main/src/pages/ProjectsPage.tsx"
click node_projectstore "https://github.com/xenon110/task_management_bkm/blob/main/src/store/useProjectStore.ts"
click node_taskstore "https://github.com/xenon110/task_management_bkm/blob/main/src/store/useTaskStore.ts"
click node_goalstore "https://github.com/xenon110/task_management_bkm/blob/main/src/store/useGoalStore.ts"
click node_teams "https://github.com/xenon110/task_management_bkm/blob/main/src/pages/TeamsPage.tsx"
click node_member "https://github.com/xenon110/task_management_bkm/blob/main/src/components/MemberDetailModal.tsx"
click node_attendance "https://github.com/xenon110/task_management_bkm/blob/main/src/pages/AttendancePage.tsx"
click node_attstore "https://github.com/xenon110/task_management_bkm/blob/main/src/store/useAttendanceStore.ts"
click node_employee "https://github.com/xenon110/task_management_bkm/blob/main/src/utils/employeeDataMap.ts"
click node_auth "https://github.com/xenon110/task_management_bkm/blob/main/src/store/useAuthStore.ts"
click node_workspace "https://github.com/xenon110/task_management_bkm/blob/main/src/store/useWorkspaceStore.ts"
click node_permissions "https://github.com/xenon110/task_management_bkm/blob/main/src/hooks/usePermissions.ts"
click node_attendancefn "https://github.com/xenon110/task_management_bkm/blob/main/supabase/functions/attendance-punch/index.ts"
click node_electron "https://github.com/xenon110/task_management_bkm/blob/main/attendance-desktop/electron/preload/preload.ts"
click node_identity "https://github.com/xenon110/task_management_bkm/blob/main/attendance-desktop/electron/device/identity.ts"
click node_electronmain "https://github.com/xenon110/task_management_bkm/blob/main/attendance-desktop/electron/main/main.ts"

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_layout,node_login,node_dashboard,node_user toneBlue
class node_tasks,node_taskpanel,node_board,node_projects,node_supabase toneAmber
class node_teams,node_member,node_attendance,node_employee toneMint
class node_projectstore,node_taskstore,node_goalstore,node_attstore,node_auth,node_workspace,node_permissions toneRose
class node_attendancefn,node_electron,node_identity,node_electronmain toneTeal
```

## Components

### Application

- [Router](https://github.com/xenon110/task_management_bkm/blob/main/src/App.tsx): `src/App.tsx`
- [Workspace Layout](https://github.com/xenon110/task_management_bkm/blob/main/src/layouts/MainLayout.tsx): `src/layouts/MainLayout.tsx`
- [Sign In](https://github.com/xenon110/task_management_bkm/blob/main/src/pages/LoginPage.tsx): `src/pages/LoginPage.tsx`
- [Dashboard](https://github.com/xenon110/task_management_bkm/blob/main/src/pages/DashboardPage.tsx): `src/pages/DashboardPage.tsx`

### Work Management

- [Task Views](https://github.com/xenon110/task_management_bkm/blob/main/src/pages/TasksPage.tsx): `src/pages/TasksPage.tsx`
- [Task Details](https://github.com/xenon110/task_management_bkm/blob/main/src/components/TaskDetailPanel.tsx): `src/components/TaskDetailPanel.tsx`
- [Board View](https://github.com/xenon110/task_management_bkm/blob/main/src/components/BoardView.tsx): `src/components/BoardView.tsx`
- [Project Views](https://github.com/xenon110/task_management_bkm/blob/main/src/pages/ProjectsPage.tsx): `src/pages/ProjectsPage.tsx`

### People and Attendance

- [Team Management](https://github.com/xenon110/task_management_bkm/blob/main/src/pages/TeamsPage.tsx): `src/pages/TeamsPage.tsx`
- [Member Details](https://github.com/xenon110/task_management_bkm/blob/main/src/components/MemberDetailModal.tsx): `src/components/MemberDetailModal.tsx`
- [Attendance](https://github.com/xenon110/task_management_bkm/blob/main/src/pages/AttendancePage.tsx): `src/pages/AttendancePage.tsx`
- [Employee Data](https://github.com/xenon110/task_management_bkm/blob/main/src/utils/employeeDataMap.ts): `src/utils/employeeDataMap.ts`

### State and Services

- [Project State](https://github.com/xenon110/task_management_bkm/blob/main/src/store/useProjectStore.ts): `src/store/useProjectStore.ts`
- [Task State](https://github.com/xenon110/task_management_bkm/blob/main/src/store/useTaskStore.ts): `src/store/useTaskStore.ts`
- [Goal State](https://github.com/xenon110/task_management_bkm/blob/main/src/store/useGoalStore.ts): `src/store/useGoalStore.ts`
- [Attendance State](https://github.com/xenon110/task_management_bkm/blob/main/src/store/useAttendanceStore.ts): `src/store/useAttendanceStore.ts`
- [Authentication State](https://github.com/xenon110/task_management_bkm/blob/main/src/store/useAuthStore.ts): `src/store/useAuthStore.ts`
- [Workspace State](https://github.com/xenon110/task_management_bkm/blob/main/src/store/useWorkspaceStore.ts): `src/store/useWorkspaceStore.ts`
- [Role Permissions](https://github.com/xenon110/task_management_bkm/blob/main/src/hooks/usePermissions.ts): `src/hooks/usePermissions.ts`

### Other components

- **User**
- **Supabase**
- [Attendance Functions](https://github.com/xenon110/task_management_bkm/blob/main/supabase/functions/attendance-punch/index.ts): `supabase/functions/attendance-punch/index.ts`
- [Desktop Bridge](https://github.com/xenon110/task_management_bkm/blob/main/attendance-desktop/electron/preload/preload.ts): `attendance-desktop/electron/preload/preload.ts`
- [Device Identity](https://github.com/xenon110/task_management_bkm/blob/main/attendance-desktop/electron/device/identity.ts): `attendance-desktop/electron/device/identity.ts`
- [Desktop Main](https://github.com/xenon110/task_management_bkm/blob/main/attendance-desktop/electron/main/main.ts): `attendance-desktop/electron/main/main.ts`

## Connections

- User → Router: uses (evidence: `src/App.tsx`)
- Router → Authentication State: checks session (evidence: `src/App.tsx`)
- Router → Sign In: routes to (evidence: `src/App.tsx`)
- Router → Workspace Layout: routes to (evidence: `src/App.tsx`)
- Router → Dashboard: routes to (evidence: `src/App.tsx`)
- Router → Task Views: routes to (evidence: `src/App.tsx`)
- Router → Project Views: routes to (evidence: `src/App.tsx`)
- Router → Team Management: routes to (evidence: `src/App.tsx`)
- Router → Attendance: routes to (evidence: `src/App.tsx`)
- Sign In → Authentication State: uses (evidence: `src/pages/LoginPage.tsx`)
- Workspace Layout → Authentication State: uses (evidence: `src/layouts/MainLayout.tsx`)
- Workspace Layout → Task State: uses (evidence: `src/layouts/MainLayout.tsx`)
- Workspace Layout → Workspace State: uses (evidence: `src/layouts/MainLayout.tsx`)
- Dashboard → Task State: reads (evidence: `src/pages/DashboardPage.tsx`)
- Dashboard → Project State: reads (evidence: `src/pages/DashboardPage.tsx`)
- Dashboard → Goal State: reads (evidence: `src/pages/DashboardPage.tsx`)
- Task Views → Task State: uses (evidence: `src/pages/TasksPage.tsx`)
- Task Views → Board View: renders (evidence: `src/pages/TasksPage.tsx`)
- Task Details → Task State: uses (evidence: `src/components/TaskDetailPanel.tsx`)
- Project Views → Project State: uses (evidence: `src/pages/ProjectsPage.tsx`)
- Project Views → Task State: uses (evidence: `src/pages/ProjectsPage.tsx`)
- Team Management → Workspace State: uses (evidence: `src/pages/TeamsPage.tsx`)
- Team Management → Member Details: renders (evidence: `src/pages/TeamsPage.tsx`)
- Team Management → Role Permissions: checks (evidence: `src/pages/TeamsPage.tsx`)
- Member Details → Attendance State: uses (evidence: `src/components/MemberDetailModal.tsx`)
- Member Details → Employee Data: looks up (evidence: `src/components/MemberDetailModal.tsx`)
- Attendance → Attendance State: uses (evidence: `src/pages/AttendancePage.tsx`)
- Attendance → Workspace State: uses (evidence: `src/pages/AttendancePage.tsx`)
- Attendance → Employee Data: looks up (evidence: `src/pages/AttendancePage.tsx`)
- Authentication State → Supabase: queries (evidence: `src/store/useAuthStore.ts`)
- Workspace State → Supabase: queries (evidence: `src/store/useWorkspaceStore.ts`)
- Task State → Supabase: queries (evidence: `src/store/useTaskStore.ts`)
- Project State → Supabase: queries (evidence: `src/store/useProjectStore.ts`)
- Attendance State → Supabase: queries (evidence: `src/store/useAttendanceStore.ts`)
- Authentication State → Workspace State: updates (evidence: `src/store/useAuthStore.ts`)
- Authentication State → Task State: uses (evidence: `src/store/useAuthStore.ts`)
- Task State → Goal State
- Attendance State → Attendance Functions: invokes
- Attendance State → Desktop Bridge: uses bridge
- Desktop Main → Device Identity: uses (evidence: `attendance-desktop/electron/main/main.ts`)
