# amjadelmerabet/pro-manager architecture

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

- Interactive diagram: https://gitdiagram.com/amjadelmerabet/pro-manager
- Repository: https://github.com/amjadelmerabet/pro-manager

## Overview

Pro Manager is a project-and-task management web app. Users enter through public pages or sign in, then use a Classic or Modern workspace to find, organize, create, and update projects and tasks; the service handles authenticated requests, authorization, and persistence. The graph includes documented comments, activity history, and account capabilities, though their implementation paths are not all sampled. Several subsystem links are based on the README or SOURCE INDEX; unsampled internals are represented at their exact enclosing directories.

Main entry points: [`server/routes/tasks.js`](https://github.com/amjadelmerabet/pro-manager/blob/main/server/routes/tasks.js) (Task routes), [`client/src/api`](https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/api) (HTTP API clients), [`server/index.js`](https://github.com/amjadelmerabet/pro-manager/blob/main/server/index.js) (HTTP entry point), [`client/src/App.jsx`](https://github.com/amjadelmerabet/pro-manager/blob/main/client/src/App.jsx) (Application routing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_app["Application routing<br/>[App.jsx]"]
  node_public["Public pages"]
  node_client_api["HTTP API clients"]
end

subgraph group_work["Work management"]
  node_workspace["Workspace views"]
  node_projects["Projects"]
  node_project_detail["Project detail"]
  node_tasks["Tasks"]
  node_task_detail["Task detail"]
end

subgraph group_service["Application service"]
  node_server["HTTP entry point<br/>[index.js]"]
  node_project_routes["Project routes<br/>[projects.js]"]
  node_task_routes["Task routes<br/>[tasks.js]"]
  node_project_ops["Project operations"]
  node_task_ops["Task operations"]
  node_comments_activity["Comments and activity"]
end

subgraph group_identity["Identity and access"]
  node_auth_routes["Account and token routes"]
  node_authorization["Access control"]
  node_account_ops["Account and session operations"]
end

subgraph group_storage["Persistence"]
  node_database[("PostgreSQL connection<br/>[connection.js]")]
end

node_user(("User"))

node_user -->|"opens"| node_app
node_app -->|"routes to"| node_public
node_app -->|"routes to"| node_workspace
node_workspace -.->|"presents"| node_projects
node_workspace -.->|"presents"| node_tasks
node_projects -.->|"requests data"| node_client_api
node_project_detail -.->|"requests data"| node_client_api
node_tasks -->|"fetches and changes"| node_client_api
node_task_detail -.->|"requests data"| node_client_api
node_client_api -->|"sends HTTP requests"| node_server
node_server -->|"dispatches"| node_project_routes
node_server -->|"dispatches"| node_task_routes
node_server -->|"dispatches"| node_auth_routes
node_task_routes -->|"checks permissions"| node_authorization
node_task_routes -->|"calls task operations"| node_task_ops
node_task_routes -->|"checks linked project"| node_project_ops
node_project_routes -->|"calls project operations"| node_project_ops
node_task_routes -->|"records activity"| node_comments_activity
node_authorization -->|"reads roles and controls"| node_database
node_task_ops -->|"queries tasks"| node_database
node_project_ops -.->|"persists project data"| node_database
node_auth_routes -.->|"handles accounts"| node_account_ops
node_auth_routes -.->|"enforces access"| node_authorization
node_user -.->|"browses"| node_public
node_projects -.->|"opens project"| node_project_detail
node_tasks -.->|"opens task"| node_task_detail
node_project_detail -.->|"reviews comments and history"| node_comments_activity
node_task_detail -.->|"reviews comments and history"| node_comments_activity

click node_app "https://github.com/amjadelmerabet/pro-manager/blob/main/client/src/App.jsx"
click node_public "https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/pages/public"
click node_workspace "https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/pages/auth"
click node_projects "https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/pages/auth/projects"
click node_project_detail "https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/pages/auth/project"
click node_tasks "https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/pages/auth/tasks"
click node_task_detail "https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/pages/auth/task"
click node_client_api "https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/api"
click node_server "https://github.com/amjadelmerabet/pro-manager/blob/main/server/index.js"
click node_project_routes "https://github.com/amjadelmerabet/pro-manager/blob/main/server/routes/projects.js"
click node_task_routes "https://github.com/amjadelmerabet/pro-manager/blob/main/server/routes/tasks.js"
click node_project_ops "https://github.com/amjadelmerabet/pro-manager/tree/main/server/controllers/projects"
click node_task_ops "https://github.com/amjadelmerabet/pro-manager/tree/main/server/controllers/tasks"
click node_comments_activity "https://github.com/amjadelmerabet/pro-manager/tree/main/server/controllers"
click node_auth_routes "https://github.com/amjadelmerabet/pro-manager/tree/main/server/routes"
click node_authorization "https://github.com/amjadelmerabet/pro-manager/tree/main/server/authorization"
click node_account_ops "https://github.com/amjadelmerabet/pro-manager/tree/main/server/controllers/users"
click node_database "https://github.com/amjadelmerabet/pro-manager/blob/main/server/db/connection.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_public,node_client_api,node_user toneBlue
class node_workspace,node_projects,node_project_detail,node_tasks,node_task_detail toneAmber
class node_server,node_project_routes,node_task_routes,node_project_ops,node_task_ops,node_comments_activity toneMint
class node_auth_routes,node_authorization,node_account_ops toneRose
class node_database toneIndigo
```

## Components

### Web experience

- [Application routing](https://github.com/amjadelmerabet/pro-manager/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Public pages](https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/pages/public): `client/src/pages/public`
- [HTTP API clients](https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/api): `client/src/api`

### Work management

- [Workspace views](https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/pages/auth): `client/src/pages/auth`
- [Projects](https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/pages/auth/projects): `client/src/pages/auth/projects`
- [Project detail](https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/pages/auth/project): `client/src/pages/auth/project`
- [Tasks](https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/pages/auth/tasks): `client/src/pages/auth/tasks`
- [Task detail](https://github.com/amjadelmerabet/pro-manager/tree/main/client/src/pages/auth/task): `client/src/pages/auth/task`

### Application service

- [HTTP entry point](https://github.com/amjadelmerabet/pro-manager/blob/main/server/index.js): `server/index.js`
- [Project routes](https://github.com/amjadelmerabet/pro-manager/blob/main/server/routes/projects.js): `server/routes/projects.js`
- [Task routes](https://github.com/amjadelmerabet/pro-manager/blob/main/server/routes/tasks.js): `server/routes/tasks.js`
- [Project operations](https://github.com/amjadelmerabet/pro-manager/tree/main/server/controllers/projects): `server/controllers/projects`
- [Task operations](https://github.com/amjadelmerabet/pro-manager/tree/main/server/controllers/tasks): `server/controllers/tasks`
- [Comments and activity](https://github.com/amjadelmerabet/pro-manager/tree/main/server/controllers): `server/controllers`

### Identity and access

- [Account and token routes](https://github.com/amjadelmerabet/pro-manager/tree/main/server/routes): `server/routes`
- [Access control](https://github.com/amjadelmerabet/pro-manager/tree/main/server/authorization): `server/authorization`
- [Account and session operations](https://github.com/amjadelmerabet/pro-manager/tree/main/server/controllers/users): `server/controllers/users`

### Persistence

- [PostgreSQL connection](https://github.com/amjadelmerabet/pro-manager/blob/main/server/db/connection.js): `server/db/connection.js`

### Other components

- **User**

## Connections

- User → Application routing: opens (evidence: `client/src/App.jsx`)
- Application routing → Public pages: routes to (evidence: `client/src/App.jsx`)
- Application routing → Workspace views: routes to (evidence: `client/src/App.jsx`)
- Workspace views → Projects: presents (evidence: `client/src/pages/auth/tasks/modern/Tasks.jsx`)
- Workspace views → Tasks: presents (evidence: `client/src/pages/auth/tasks/modern/Tasks.jsx`)
- Projects → HTTP API clients: requests data (evidence: `client/src/pages/auth/projects/classic/utils/fetchUserProjectsUtil.js`)
- Project detail → HTTP API clients: requests data (evidence: `client/src/pages/auth/project/utils/fetchProjectTasksUtil.js`)
- Tasks → HTTP API clients: fetches and changes (evidence: `client/src/pages/auth/tasks/modern/Tasks.jsx`)
- Task detail → HTTP API clients: requests data
- HTTP API clients → HTTP entry point: sends HTTP requests (evidence: `client/src/api/tasks/getTasksByAssignedToAPI.js`)
- HTTP entry point → Project routes: dispatches (evidence: `server/index.js`)
- HTTP entry point → Task routes: dispatches (evidence: `server/index.js`)
- HTTP entry point → Account and token routes: dispatches (evidence: `server/index.js`)
- Task routes → Access control: checks permissions (evidence: `server/routes/tasks.js`)
- Task routes → Task operations: calls task operations (evidence: `server/routes/tasks.js`)
- Task routes → Project operations: checks linked project (evidence: `server/routes/tasks.js`)
- Project routes → Project operations: calls project operations (evidence: `server/routes/projects.js`)
- Task routes → Comments and activity: records activity (evidence: `server/routes/tasks.js`)
- Access control → PostgreSQL connection: reads roles and controls (evidence: `server/authorization/helpers/user_roles/getUserRolesByUser.js`)
- Task operations → PostgreSQL connection: queries tasks (evidence: `server/controllers/tasks/getTasksByAssignedTo.js`)
- Project operations → PostgreSQL connection: persists project data
- Account and token routes → Account and session operations: handles accounts (evidence: `server/routes/tokens.js`)
- Account and token routes → Access control: enforces access (evidence: `server/routes/tasks.js`)
- User → Public pages: browses
- Projects → Project detail: opens project
- Tasks → Task detail: opens task
- Project detail → Comments and activity: reviews comments and history
- Task detail → Comments and activity: reviews comments and history
