# xuanquang1301/mini-jira-project architecture

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

- Interactive diagram: https://gitdiagram.com/xuanquang1301/mini-jira-project
- Repository: https://github.com/xuanquang1301/mini-jira-project

## Overview

Mini Jira is a web-and-mobile Agile project and task manager backed by an Express API and PostgreSQL. The main workflow is to manage projects and membership, create and assign tasks, move them through Kanban states, and track progress; users can also discuss tasks and receive notifications. Web pages use a shared API client, while the mobile app excerpt only checks server connectivity. The README documents additional timeline and admin capabilities; their exact internal wiring is not shown in the sampled source.

Main entry points: [`apps/server/src/db/index.ts`](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/db/index.ts) (Database access), [`apps/server/src/routes/index.ts`](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/routes/index.ts) (API routes), [`apps/server/src/services/project.service.ts`](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/services/project.service.ts) (Project service), [`apps/server/src/services/task.service.ts`](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/services/task.service.ts) (Task service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Client apps"]
  node_web["Web workspace<br/>[App.tsx]"]
  node_mobile["Mobile status app<br/>[App.tsx]"]
  node_webapi["Web API client<br/>[api.ts]"]
end

subgraph group_api["API layer"]
  node_server["API server<br/>[index.ts]"]
  node_routes["API routes<br/>[index.ts]"]
  node_auth["Auth middleware<br/>[auth.middleware.ts]"]
  node_projectctl["Project controller"]
  node_taskctl["Task controller<br/>[task.controller.ts]"]
  node_userctl["User controller<br/>[user.controller.ts]"]
end

subgraph group_domain["Project and task domain"]
  node_projectsvc["Project service<br/>[project.service.ts]"]
  node_tasksvc["Task service<br/>[task.service.ts]"]
  node_usersvc["Account service<br/>[user.service.ts]"]
  node_comments["Comments service<br/>[comment.service.ts]"]
  node_subtasks["Subtasks service<br/>[subtask.service.ts]"]
  node_notificationsvc["Notification service"]
end

subgraph group_data["Persistence and events"]
  node_db["Database access<br/>[index.ts]"]
  node_schema["Domain tables<br/>[schema.ts]"]
end

node_user(("Project user"))
node_pg[("PostgreSQL")]

node_user -->|"uses"| node_web
node_web -->|"requests data"| node_webapi
node_mobile -.->|"checks connectivity"| node_server
node_webapi -->|"HTTP requests"| node_server
node_server -->|"dispatches"| node_routes
node_routes -->|"protects routes"| node_auth
node_routes -->|"dispatches"| node_projectctl
node_routes -->|"dispatches"| node_taskctl
node_routes -->|"dispatches"| node_userctl
node_projectctl -->|"calls"| node_projectsvc
node_taskctl -->|"calls"| node_tasksvc
node_userctl -->|"calls"| node_usersvc
node_projectsvc -->|"queries"| node_db
node_tasksvc -->|"queries"| node_db
node_usersvc -->|"queries"| node_db
node_comments -->|"queries"| node_db
node_subtasks -->|"queries"| node_db
node_db -->|"uses tables"| node_schema
node_db -->|"reads and writes"| node_pg
node_projectsvc -->|"creates notifications"| node_notificationsvc
node_tasksvc -->|"creates notifications"| node_notificationsvc

click node_web "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/web/src/App.tsx"
click node_mobile "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/mobile/App.tsx"
click node_webapi "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/web/src/services/api.ts"
click node_server "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/index.ts"
click node_routes "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/routes/index.ts"
click node_auth "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/middlewares/auth.middleware.ts"
click node_projectctl "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/controllers/project.controller.ts"
click node_taskctl "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/controllers/task.controller.ts"
click node_userctl "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/controllers/user.controller.ts"
click node_projectsvc "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/services/project.service.ts"
click node_tasksvc "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/services/task.service.ts"
click node_usersvc "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/services/user.service.ts"
click node_comments "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/services/comment.service.ts"
click node_subtasks "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/services/subtask.service.ts"
click node_notificationsvc "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/services/notification.service.ts"
click node_db "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/db/index.ts"
click node_schema "https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/db/schema.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_web,node_mobile,node_webapi,node_user toneBlue
class node_server,node_routes,node_auth,node_projectctl,node_taskctl,node_userctl,node_pg toneAmber
class node_projectsvc,node_tasksvc,node_usersvc,node_comments,node_subtasks,node_notificationsvc toneMint
class node_db,node_schema toneRose
```

## Components

### Client apps

- [Web workspace](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/web/src/App.tsx): `apps/web/src/App.tsx`
- [Mobile status app](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/mobile/App.tsx): `apps/mobile/App.tsx`
- [Web API client](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/web/src/services/api.ts): `apps/web/src/services/api.ts`

### API layer

- [API server](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/index.ts): `apps/server/src/index.ts`
- [API routes](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/routes/index.ts): `apps/server/src/routes/index.ts`
- [Auth middleware](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/middlewares/auth.middleware.ts): `apps/server/src/middlewares/auth.middleware.ts`
- [Project controller](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/controllers/project.controller.ts): `apps/server/src/controllers/project.controller.ts`
- [Task controller](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/controllers/task.controller.ts): `apps/server/src/controllers/task.controller.ts`
- [User controller](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/controllers/user.controller.ts): `apps/server/src/controllers/user.controller.ts`

### Project and task domain

- [Project service](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/services/project.service.ts): `apps/server/src/services/project.service.ts`
- [Task service](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/services/task.service.ts): `apps/server/src/services/task.service.ts`
- [Account service](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/services/user.service.ts): `apps/server/src/services/user.service.ts`
- [Comments service](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/services/comment.service.ts): `apps/server/src/services/comment.service.ts`
- [Subtasks service](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/services/subtask.service.ts): `apps/server/src/services/subtask.service.ts`
- [Notification service](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/services/notification.service.ts): `apps/server/src/services/notification.service.ts`

### Persistence and events

- [Database access](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/db/index.ts): `apps/server/src/db/index.ts`
- [Domain tables](https://github.com/xuanquang1301/mini-jira-project/blob/main/apps/server/src/db/schema.ts): `apps/server/src/db/schema.ts`

### Other components

- **Project user**
- **PostgreSQL**

## Connections

- Project user → Web workspace: uses
- Web workspace → Web API client: requests data
- Mobile status app → API server: checks connectivity
- Web API client → API server: HTTP requests
- API server → API routes: dispatches
- API routes → Auth middleware: protects routes
- API routes → Project controller: dispatches
- API routes → Task controller: dispatches
- API routes → User controller: dispatches
- Project controller → Project service: calls
- Task controller → Task service: calls
- User controller → Account service: calls
- Project service → Database access: queries
- Task service → Database access: queries
- Account service → Database access: queries
- Comments service → Database access: queries
- Subtasks service → Database access: queries
- Database access → Domain tables: uses tables
- Database access → PostgreSQL: reads and writes
- Project service → Notification service: creates notifications
- Task service → Notification service: creates notifications
