# uagen/project-management-system architecture

> Architecture diagram of the GitHub repository uagen/project-management-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-01). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/uagen/project-management-system
- Repository: https://github.com/uagen/project-management-system

## Overview

Project-management cockpit: users review project status in a dashboard and Gantt view, then track plans, requirements, and defects. The browser UI supports a localStorage-only preview or communicates with the Express API for persistent use. The API authenticates users, routes project/item/member operations to controllers, and stores records in SQLite. The README documents the product’s major views and preview/deployed modes; sampled server code supports the API, seeding, and persistence relationships shown below.

Main entry points: [`app.js`](https://github.com/uagen/project-management-system/blob/main/app.js) (Project cockpit), [`server/server.js`](https://github.com/uagen/project-management-system/blob/main/server/server.js) (Express server), [`server/routes/index.js`](https://github.com/uagen/project-management-system/blob/main/server/routes/index.js) (API routing), [`server/db.js`](https://github.com/uagen/project-management-system/blob/main/server/db.js) (SQLite database)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Project cockpit"]
  node_shell["Browser shell<br/>[index.html]"]
  node_styles["Cockpit styling<br/>[styles.css]"]
  node_cockpit["Project cockpit<br/>[app.js]"]
  node_demo_data["Demo seed data<br/>[data.js]"]
  node_dashboard["Status dashboard<br/>[app.js]"]
  node_gantt["Gantt timeline<br/>[app.js]"]
  node_work_tracking["Plan-requirement-defect tracking<br/>[app.js]"]
end

subgraph group_api["API and access"]
  node_api_server["Express server<br/>[server.js]"]
  node_routes["API routing<br/>[index.js]"]
  node_auth_controller["Authentication endpoints<br/>[authController.js]"]
  node_auth_middleware["Session guard<br/>[auth.js]"]
  node_config["Runtime configuration<br/>[config.js]"]
end

subgraph group_domain["Project operations"]
  node_project_controller["Project endpoints"]
  node_item_controller["Work item endpoints<br/>[itemController.js]"]
  node_member_controller["Member endpoints"]
  node_auth_service["Login and sessions<br/>[authService.js]"]
  node_data_service["Bootstrap data<br/>[dataService.js]"]
  node_seed_service["Initial data seeding<br/>[seedService.js]"]
  node_seed_data["Sample projects and members<br/>[seed-data.js]"]
end

subgraph group_storage["SQLite persistence"]
  node_project_repo["Project records"]
  node_item_repo["Work item records<br/>[itemRepository.js]"]
  node_member_repo["Member records"]
  node_auth_repo["User and session records<br/>[authRepository.js]"]
  node_sqlite[("SQLite database<br/>[db.js]")]
end

node_user(("Project user"))

node_user -->|"opens"| node_shell
node_shell -->|"loads"| node_cockpit
node_cockpit -.->|"uses"| node_styles
node_cockpit -.->|"uses preview data"| node_demo_data
node_cockpit -->|"presents"| node_dashboard
node_cockpit -->|"presents"| node_gantt
node_cockpit -->|"tracks"| node_work_tracking
node_cockpit -->|"requests API"| node_api_server
node_api_server -->|"mounts API"| node_routes
node_api_server -->|"initializes schema"| node_sqlite
node_api_server -->|"seeds administrator"| node_auth_service
node_api_server -->|"seeds records"| node_seed_service
node_api_server -->|"reads settings"| node_config
node_routes -->|"dispatches"| node_auth_controller
node_routes -->|"dispatches"| node_project_controller
node_routes -->|"dispatches"| node_item_controller
node_routes -->|"dispatches"| node_member_controller
node_routes -->|"guards routes"| node_auth_middleware
node_auth_middleware -->|"validates session"| node_auth_service
node_auth_controller -->|"delegates auth"| node_auth_service
node_auth_service -->|"reads and writes"| node_auth_repo
node_project_controller -->|"manages projects"| node_project_repo
node_project_controller -->|"deletes project items"| node_item_repo
node_item_controller -->|"loads bootstrap"| node_data_service
node_item_controller -->|"writes items"| node_item_repo
node_member_controller -->|"lists members"| node_member_repo
node_data_service -->|"reads projects"| node_project_repo
node_data_service -->|"reads items"| node_item_repo
node_seed_service -->|"loads seed records"| node_seed_data
node_seed_service -->|"creates projects"| node_project_repo
node_seed_service -->|"creates items"| node_item_repo
node_seed_service -->|"creates members"| node_member_repo
node_project_repo -->|"queries"| node_sqlite
node_item_repo -->|"queries"| node_sqlite
node_member_repo -->|"queries"| node_sqlite
node_auth_repo -->|"queries"| node_sqlite
node_sqlite -->|"uses database path"| node_config

click node_shell "https://github.com/uagen/project-management-system/blob/main/index.html"
click node_styles "https://github.com/uagen/project-management-system/blob/main/styles.css"
click node_cockpit "https://github.com/uagen/project-management-system/blob/main/app.js"
click node_demo_data "https://github.com/uagen/project-management-system/blob/main/data.js"
click node_dashboard "https://github.com/uagen/project-management-system/blob/main/app.js"
click node_gantt "https://github.com/uagen/project-management-system/blob/main/app.js"
click node_work_tracking "https://github.com/uagen/project-management-system/blob/main/app.js"
click node_api_server "https://github.com/uagen/project-management-system/blob/main/server/server.js"
click node_routes "https://github.com/uagen/project-management-system/blob/main/server/routes/index.js"
click node_auth_controller "https://github.com/uagen/project-management-system/blob/main/server/controllers/authController.js"
click node_auth_middleware "https://github.com/uagen/project-management-system/blob/main/server/middleware/auth.js"
click node_project_controller "https://github.com/uagen/project-management-system/blob/main/server/controllers/projectController.js"
click node_item_controller "https://github.com/uagen/project-management-system/blob/main/server/controllers/itemController.js"
click node_member_controller "https://github.com/uagen/project-management-system/blob/main/server/controllers/memberController.js"
click node_auth_service "https://github.com/uagen/project-management-system/blob/main/server/services/authService.js"
click node_data_service "https://github.com/uagen/project-management-system/blob/main/server/services/dataService.js"
click node_seed_service "https://github.com/uagen/project-management-system/blob/main/server/services/seedService.js"
click node_seed_data "https://github.com/uagen/project-management-system/blob/main/server/seed-data.js"
click node_project_repo "https://github.com/uagen/project-management-system/blob/main/server/repositories/projectRepository.js"
click node_item_repo "https://github.com/uagen/project-management-system/blob/main/server/repositories/itemRepository.js"
click node_member_repo "https://github.com/uagen/project-management-system/blob/main/server/repositories/memberRepository.js"
click node_auth_repo "https://github.com/uagen/project-management-system/blob/main/server/repositories/authRepository.js"
click node_sqlite "https://github.com/uagen/project-management-system/blob/main/server/db.js"
click node_config "https://github.com/uagen/project-management-system/blob/main/server/config.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_shell,node_styles,node_cockpit,node_demo_data,node_dashboard,node_gantt,node_work_tracking,node_user toneBlue
class node_api_server,node_routes,node_auth_controller,node_auth_middleware,node_config toneAmber
class node_project_controller,node_item_controller,node_member_controller,node_auth_service,node_data_service,node_seed_service,node_seed_data toneMint
class node_project_repo,node_item_repo,node_member_repo,node_auth_repo,node_sqlite toneRose
```

## Components

### Project cockpit

- [Browser shell](https://github.com/uagen/project-management-system/blob/main/index.html): `index.html`
- [Cockpit styling](https://github.com/uagen/project-management-system/blob/main/styles.css): `styles.css`
- [Project cockpit](https://github.com/uagen/project-management-system/blob/main/app.js): `app.js`
- [Demo seed data](https://github.com/uagen/project-management-system/blob/main/data.js): `data.js`
- [Status dashboard](https://github.com/uagen/project-management-system/blob/main/app.js): `app.js`
- [Gantt timeline](https://github.com/uagen/project-management-system/blob/main/app.js): `app.js`
- [Plan-requirement-defect tracking](https://github.com/uagen/project-management-system/blob/main/app.js): `app.js`

### API and access

- [Express server](https://github.com/uagen/project-management-system/blob/main/server/server.js): `server/server.js`
- [API routing](https://github.com/uagen/project-management-system/blob/main/server/routes/index.js): `server/routes/index.js`
- [Authentication endpoints](https://github.com/uagen/project-management-system/blob/main/server/controllers/authController.js): `server/controllers/authController.js`
- [Session guard](https://github.com/uagen/project-management-system/blob/main/server/middleware/auth.js): `server/middleware/auth.js`
- [Runtime configuration](https://github.com/uagen/project-management-system/blob/main/server/config.js): `server/config.js`

### Project operations

- [Project endpoints](https://github.com/uagen/project-management-system/blob/main/server/controllers/projectController.js): `server/controllers/projectController.js`
- [Work item endpoints](https://github.com/uagen/project-management-system/blob/main/server/controllers/itemController.js): `server/controllers/itemController.js`
- [Member endpoints](https://github.com/uagen/project-management-system/blob/main/server/controllers/memberController.js): `server/controllers/memberController.js`
- [Login and sessions](https://github.com/uagen/project-management-system/blob/main/server/services/authService.js): `server/services/authService.js`
- [Bootstrap data](https://github.com/uagen/project-management-system/blob/main/server/services/dataService.js): `server/services/dataService.js`
- [Initial data seeding](https://github.com/uagen/project-management-system/blob/main/server/services/seedService.js): `server/services/seedService.js`
- [Sample projects and members](https://github.com/uagen/project-management-system/blob/main/server/seed-data.js): `server/seed-data.js`

### SQLite persistence

- [Project records](https://github.com/uagen/project-management-system/blob/main/server/repositories/projectRepository.js): `server/repositories/projectRepository.js`
- [Work item records](https://github.com/uagen/project-management-system/blob/main/server/repositories/itemRepository.js): `server/repositories/itemRepository.js`
- [Member records](https://github.com/uagen/project-management-system/blob/main/server/repositories/memberRepository.js): `server/repositories/memberRepository.js`
- [User and session records](https://github.com/uagen/project-management-system/blob/main/server/repositories/authRepository.js): `server/repositories/authRepository.js`
- [SQLite database](https://github.com/uagen/project-management-system/blob/main/server/db.js): `server/db.js`

### Other components

- **Project user**

## Connections

- Project user → Browser shell: opens (evidence: `README.md`)
- Browser shell → Project cockpit: loads (evidence: `README.md`)
- Project cockpit → Cockpit styling: uses
- Project cockpit → Demo seed data: uses preview data
- Project cockpit → Status dashboard: presents (evidence: `README.md`)
- Project cockpit → Gantt timeline: presents (evidence: `README.md`)
- Project cockpit → Plan-requirement-defect tracking: tracks (evidence: `README.md`)
- Project cockpit → Express server: requests API (evidence: `README.md`)
- Express server → API routing: mounts API (evidence: `server/server.js`)
- Express server → SQLite database: initializes schema (evidence: `server/server.js`)
- Express server → Login and sessions: seeds administrator (evidence: `server/server.js`)
- Express server → Initial data seeding: seeds records (evidence: `server/server.js`)
- Express server → Runtime configuration: reads settings (evidence: `server/server.js`)
- API routing → Authentication endpoints: dispatches (evidence: `server/routes/index.js`)
- API routing → Project endpoints: dispatches (evidence: `server/routes/index.js`)
- API routing → Work item endpoints: dispatches (evidence: `server/routes/index.js`)
- API routing → Member endpoints: dispatches (evidence: `server/routes/index.js`)
- API routing → Session guard: guards routes (evidence: `server/routes/index.js`)
- Session guard → Login and sessions: validates session (evidence: `server/middleware/auth.js`)
- Authentication endpoints → Login and sessions: delegates auth (evidence: `server/controllers/authController.js`)
- Login and sessions → User and session records: reads and writes (evidence: `server/services/authService.js`)
- Project endpoints → Project records: manages projects (evidence: `server/controllers/projectController.js`)
- Project endpoints → Work item records: deletes project items (evidence: `server/controllers/projectController.js`)
- Work item endpoints → Bootstrap data: loads bootstrap (evidence: `server/controllers/itemController.js`)
- Work item endpoints → Work item records: writes items (evidence: `server/controllers/itemController.js`)
- Member endpoints → Member records: lists members (evidence: `server/controllers/memberController.js`)
- Bootstrap data → Project records: reads projects (evidence: `server/services/dataService.js`)
- Bootstrap data → Work item records: reads items (evidence: `server/services/dataService.js`)
- Initial data seeding → Sample projects and members: loads seed records (evidence: `server/services/seedService.js`)
- Initial data seeding → Project records: creates projects (evidence: `server/services/seedService.js`)
- Initial data seeding → Work item records: creates items (evidence: `server/services/seedService.js`)
- Initial data seeding → Member records: creates members (evidence: `server/services/seedService.js`)
- Project records → SQLite database: queries (evidence: `server/repositories/projectRepository.js`)
- Work item records → SQLite database: queries (evidence: `server/repositories/itemRepository.js`)
- Member records → SQLite database: queries (evidence: `server/repositories/memberRepository.js`)
- User and session records → SQLite database: queries (evidence: `server/repositories/authRepository.js`)
- SQLite database → Runtime configuration: uses database path (evidence: `server/db.js`)
