# ata204/task-manager architecture

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

## Overview

Task Manager is a role-based team work platform: admins create and assign checklist-based tasks, while members update their assigned work; both roles track progress in dashboards. The React SPA routes users to role-specific pages and calls the Express API, which applies authorization and task rules, persists domain data in MongoDB, and generates reports. Notifications and scheduled reminders extend the task lifecycle. The graph combines sampled source relationships with README-documented capabilities; several UI and integration details are documented but their implementation was not sampled.

Main entry points: [`backend/server.js`](https://github.com/ata204/task-manager/blob/main/backend/server.js) (HTTP and socket server), [`frontend/Task-Manager/src/App.jsx`](https://github.com/ata204/task-manager/blob/main/frontend/Task-Manager/src/App.jsx) (Role-based SPA), [`frontend/Task-Manager/src/utils/axiosinstance.js`](https://github.com/ata204/task-manager/blob/main/frontend/Task-Manager/src/utils/axiosinstance.js) (API client), [`frontend/Task-Manager/src/components/notifications/NotificationBell.jsx`](https://github.com/ata204/task-manager/blob/main/frontend/Task-Manager/src/components/notifications/NotificationBell.jsx) (Notification UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_app["Role-based SPA<br/>[App.jsx]"]
  node_authui["Sign-in and signup"]
  node_adminwork["Admin workspace"]
  node_memberwork["Member workspace"]
  node_userstate["User context<br/>[UserContext.jsx]"]
  node_notifyui["Notification UI"]
  node_apiwire["API client<br/>[axiosinstance.js]"]
end

subgraph group_api["API and domain"]
  node_server["HTTP and socket server<br/>[server.js]"]
  node_auth["Authentication<br/>[authController.js]"]
  node_access["Access control<br/>[authMiddleware.js]"]
  node_tasks["Task lifecycle<br/>[taskController.js]"]
  node_reports["Analytics and reports"]
  node_images["Image uploads<br/>[imageController.js]"]
end

subgraph group_data["Persistent data"]
  node_users[("User records<br/>[User.js]")]
  node_taskstore[("Task records<br/>[Task.js]")]
  node_imagestore[("Image records<br/>[Image.js]")]
  node_notificationstore[("Notification records<br/>[Notification.js]")]
end

subgraph group_events["Notifications and reminders"]
  node_notifylogic["Notification events"]
  node_delivery["Live delivery"]
  node_reminders["Due-date reminders<br/>[taskRemindeers.js]"]
  node_socket["Socket rooms<br/>[appSocket.js]"]
  node_cron["Scheduled trigger<br/>[cronRoutes.js]"]
end

node_admin(("Admin"))
node_member(("Member"))

node_admin -->|"uses"| node_app
node_member -->|"uses"| node_app
node_app -->|"routes to"| node_authui
node_app -->|"routes to"| node_adminwork
node_app -->|"routes to"| node_memberwork
node_app -->|"provides state"| node_userstate
node_app -->|"provides notifications"| node_notifyui
node_authui -->|"requests"| node_apiwire
node_adminwork -->|"requests tasks"| node_apiwire
node_memberwork -->|"requests tasks"| node_apiwire
node_notifyui -->|"polls"| node_apiwire
node_apiwire -->|"calls API"| node_server
node_server -->|"mounts routes"| node_auth
node_server -->|"mounts routes"| node_tasks
node_server -->|"mounts routes"| node_reports
node_server -->|"mounts routes"| node_images
node_server -->|"initializes"| node_socket
node_auth -->|"reads and writes"| node_users
node_access -->|"loads identity"| node_users
node_tasks -->|"reads and writes"| node_taskstore
node_tasks -->|"triggers events"| node_notifylogic
node_reports -->|"queries tasks"| node_taskstore
node_reports -->|"queries users"| node_users
node_images -->|"stores uploads"| node_imagestore
node_notifylogic -->|"dispatches"| node_delivery
node_delivery -->|"persists"| node_notificationstore
node_delivery -->|"emits events"| node_socket
node_socket -->|"pushes live events"| node_notifyui
node_cron -->|"routes trigger"| node_reminders
node_server -->|"starts job"| node_reminders
node_reminders -->|"checks due tasks"| node_taskstore
node_reminders -->|"triggers reminders"| node_notifylogic
node_notifyui -.->|"receives polling updates"| node_apiwire

click node_app "https://github.com/ata204/task-manager/blob/main/frontend/Task-Manager/src/App.jsx"
click node_authui "https://github.com/ata204/task-manager/tree/main/frontend/Task-Manager/src/pages/Auth"
click node_adminwork "https://github.com/ata204/task-manager/tree/main/frontend/Task-Manager/src/pages/Admin"
click node_memberwork "https://github.com/ata204/task-manager/tree/main/frontend/Task-Manager/src/pages/User"
click node_userstate "https://github.com/ata204/task-manager/blob/main/frontend/Task-Manager/src/context/UserContext.jsx"
click node_notifyui "https://github.com/ata204/task-manager/blob/main/frontend/Task-Manager/src/components/notifications/NotificationBell.jsx"
click node_apiwire "https://github.com/ata204/task-manager/blob/main/frontend/Task-Manager/src/utils/axiosinstance.js"
click node_server "https://github.com/ata204/task-manager/blob/main/backend/server.js"
click node_auth "https://github.com/ata204/task-manager/blob/main/backend/controllers/authController.js"
click node_access "https://github.com/ata204/task-manager/blob/main/backend/middlewares/authMiddleware.js"
click node_tasks "https://github.com/ata204/task-manager/blob/main/backend/controllers/taskController.js"
click node_reports "https://github.com/ata204/task-manager/blob/main/backend/controllers/reportController.js"
click node_images "https://github.com/ata204/task-manager/blob/main/backend/controllers/imageController.js"
click node_users "https://github.com/ata204/task-manager/blob/main/backend/models/User.js"
click node_taskstore "https://github.com/ata204/task-manager/blob/main/backend/models/Task.js"
click node_imagestore "https://github.com/ata204/task-manager/blob/main/backend/models/Image.js"
click node_notificationstore "https://github.com/ata204/task-manager/blob/main/backend/models/Notification.js"
click node_notifylogic "https://github.com/ata204/task-manager/blob/main/backend/services/notificationEvents.js"
click node_delivery "https://github.com/ata204/task-manager/blob/main/backend/services/notificationService.js"
click node_reminders "https://github.com/ata204/task-manager/blob/main/backend/controllers/taskRemindeers.js"
click node_socket "https://github.com/ata204/task-manager/blob/main/backend/appSocket.js"
click node_cron "https://github.com/ata204/task-manager/blob/main/backend/routes/cronRoutes.js"

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_authui,node_adminwork,node_memberwork,node_userstate,node_notifyui,node_apiwire toneBlue
class node_server,node_auth,node_access,node_tasks,node_reports,node_images toneAmber
class node_users,node_taskstore,node_imagestore,node_notificationstore toneMint
class node_notifylogic,node_delivery,node_reminders,node_socket,node_cron toneRose
class node_admin,node_member toneIndigo
```

## Components

### Web application

- [Role-based SPA](https://github.com/ata204/task-manager/blob/main/frontend/Task-Manager/src/App.jsx): `frontend/Task-Manager/src/App.jsx`
- [Sign-in and signup](https://github.com/ata204/task-manager/tree/main/frontend/Task-Manager/src/pages/Auth): `frontend/Task-Manager/src/pages/Auth`
- [Admin workspace](https://github.com/ata204/task-manager/tree/main/frontend/Task-Manager/src/pages/Admin): `frontend/Task-Manager/src/pages/Admin`
- [Member workspace](https://github.com/ata204/task-manager/tree/main/frontend/Task-Manager/src/pages/User): `frontend/Task-Manager/src/pages/User`
- [User context](https://github.com/ata204/task-manager/blob/main/frontend/Task-Manager/src/context/UserContext.jsx): `frontend/Task-Manager/src/context/UserContext.jsx`
- [Notification UI](https://github.com/ata204/task-manager/blob/main/frontend/Task-Manager/src/components/notifications/NotificationBell.jsx): `frontend/Task-Manager/src/components/notifications/NotificationBell.jsx`
- [API client](https://github.com/ata204/task-manager/blob/main/frontend/Task-Manager/src/utils/axiosinstance.js): `frontend/Task-Manager/src/utils/axiosinstance.js`

### API and domain

- [HTTP and socket server](https://github.com/ata204/task-manager/blob/main/backend/server.js): `backend/server.js`
- [Authentication](https://github.com/ata204/task-manager/blob/main/backend/controllers/authController.js): `backend/controllers/authController.js`
- [Access control](https://github.com/ata204/task-manager/blob/main/backend/middlewares/authMiddleware.js): `backend/middlewares/authMiddleware.js`
- [Task lifecycle](https://github.com/ata204/task-manager/blob/main/backend/controllers/taskController.js): `backend/controllers/taskController.js`
- [Analytics and reports](https://github.com/ata204/task-manager/blob/main/backend/controllers/reportController.js): `backend/controllers/reportController.js`
- [Image uploads](https://github.com/ata204/task-manager/blob/main/backend/controllers/imageController.js): `backend/controllers/imageController.js`

### Persistent data

- [User records](https://github.com/ata204/task-manager/blob/main/backend/models/User.js): `backend/models/User.js`
- [Task records](https://github.com/ata204/task-manager/blob/main/backend/models/Task.js): `backend/models/Task.js`
- [Image records](https://github.com/ata204/task-manager/blob/main/backend/models/Image.js): `backend/models/Image.js`
- [Notification records](https://github.com/ata204/task-manager/blob/main/backend/models/Notification.js): `backend/models/Notification.js`

### Notifications and reminders

- [Notification events](https://github.com/ata204/task-manager/blob/main/backend/services/notificationEvents.js): `backend/services/notificationEvents.js`
- [Live delivery](https://github.com/ata204/task-manager/blob/main/backend/services/notificationService.js): `backend/services/notificationService.js`
- [Due-date reminders](https://github.com/ata204/task-manager/blob/main/backend/controllers/taskRemindeers.js): `backend/controllers/taskRemindeers.js`
- [Socket rooms](https://github.com/ata204/task-manager/blob/main/backend/appSocket.js): `backend/appSocket.js`
- [Scheduled trigger](https://github.com/ata204/task-manager/blob/main/backend/routes/cronRoutes.js): `backend/routes/cronRoutes.js`

### Other components

- **Admin**
- **Member**

## Connections

- Admin → Role-based SPA: uses (evidence: `README.md`)
- Member → Role-based SPA: uses (evidence: `README.md`)
- Role-based SPA → Sign-in and signup: routes to (evidence: `frontend/Task-Manager/src/App.jsx`)
- Role-based SPA → Admin workspace: routes to (evidence: `frontend/Task-Manager/src/App.jsx`)
- Role-based SPA → Member workspace: routes to (evidence: `frontend/Task-Manager/src/App.jsx`)
- Role-based SPA → User context: provides state (evidence: `frontend/Task-Manager/src/App.jsx`)
- Role-based SPA → Notification UI: provides notifications (evidence: `frontend/Task-Manager/src/App.jsx`)
- Sign-in and signup → API client: requests (evidence: `README.md`)
- Admin workspace → API client: requests tasks (evidence: `frontend/Task-Manager/src/pages/Admin/ManageTasks.jsx`)
- Member workspace → API client: requests tasks (evidence: `frontend/Task-Manager/src/pages/User/MyTasks.jsx`)
- Notification UI → API client: polls
- API client → HTTP and socket server: calls API (evidence: `README.md`)
- HTTP and socket server → Authentication: mounts routes (evidence: `backend/server.js`)
- HTTP and socket server → Task lifecycle: mounts routes (evidence: `backend/server.js`)
- HTTP and socket server → Analytics and reports: mounts routes (evidence: `backend/server.js`)
- HTTP and socket server → Image uploads: mounts routes (evidence: `backend/server.js`)
- HTTP and socket server → Socket rooms: initializes (evidence: `backend/server.js`)
- Authentication → User records: reads and writes (evidence: `backend/controllers/authController.js`)
- Access control → User records: loads identity (evidence: `backend/middlewares/authMiddleware.js`)
- Task lifecycle → Task records: reads and writes (evidence: `backend/controllers/taskController.js`)
- Task lifecycle → Notification events: triggers events (evidence: `backend/controllers/taskController.js`)
- Analytics and reports → Task records: queries tasks (evidence: `backend/controllers/reportController.js`)
- Analytics and reports → User records: queries users (evidence: `backend/controllers/reportController.js`)
- Image uploads → Image records: stores uploads (evidence: `backend/controllers/imageController.js`)
- Notification events → Live delivery: dispatches (evidence: `backend/services/notificationEvents.js`)
- Live delivery → Notification records: persists (evidence: `backend/services/notificationService.js`)
- Live delivery → Socket rooms: emits events (evidence: `backend/services/notificationService.js`)
- Socket rooms → Notification UI: pushes live events (evidence: `README.md`)
- Scheduled trigger → Due-date reminders: routes trigger (evidence: `backend/routes/cronRoutes.js`)
- HTTP and socket server → Due-date reminders: starts job (evidence: `backend/server.js`)
- Due-date reminders → Task records: checks due tasks (evidence: `backend/controllers/taskRemindeers.js`)
- Due-date reminders → Notification events: triggers reminders (evidence: `backend/controllers/taskRemindeers.js`)
- Notification UI → API client: receives polling updates (evidence: `README.md`)
