# 24876021/lims architecture

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

- Interactive diagram: https://gitdiagram.com/24876021/lims
- Repository: https://github.com/24876021/lims

## Overview

LIMS is a university laboratory management platform: users access domain workflows through a Vue frontend and Spring Boot APIs. The main workflow is authenticated access to personnel, equipment, safety, reservation, resource, and report operations, with results stored by the backend and surfaced in dashboards. The README documents RBAC, JWT, notifications, and visualization; sampled service interfaces confirm several lifecycle actions and notification behavior. Backend internals beyond those samples are represented at module level where the README describes the layered architecture.

Main entry points: [`Frontend/lab-management/src/services/api.js`](https://github.com/24876021/lims/blob/main/Frontend/lab-management/src/services/api.js) (API client), [`Frontend/lab-management/src/views/Dashboard.vue`](https://github.com/24876021/lims/blob/main/Frontend/lab-management/src/views/Dashboard.vue) (Business views), [`backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/config/SecurityConfig.java`](https://github.com/24876021/lims/blob/main/backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/config/SecurityConfig.java) (Authentication and RBAC), [`backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/controller/NotificationController.java`](https://github.com/24876021/lims/blob/main/backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/controller/NotificationController.java) (Notification APIs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web frontend"]
  node_views["Business views<br/>[Dashboard.vue]"]
  node_router["Routes and guards<br/>[index.js]"]
  node_api["API client<br/>[api.js]"]
end

subgraph group_identity["Identity and messaging"]
  node_auth["Authentication and RBAC"]
  node_userctl["User and department APIs"]
  node_notify["Notification APIs"]
  node_push["WebSocket push"]
end

subgraph group_operations["Lab operations"]
  node_personnel["Personnel and attendance"]
  node_equipment["Equipment lifecycle"]
  node_safety["Safety and training"]
  node_reservation["Lab reservations"]
  node_resources["Resource inventory"]
end

subgraph group_insight["Reporting and insight"]
  node_reports["Reports"]
  node_dashboard["Dashboard statistics"]
end

node_user(("Lab user"))
node_mysql[("MySQL database")]
node_redis[("Redis")]
node_browser(("Browser"))
node_websocket(("WebSocket client"))

node_user -->|"uses"| node_browser
node_browser -->|"renders"| node_views
node_views -->|"navigates"| node_router
node_views -->|"requests"| node_api
node_api -->|"API calls"| node_auth
node_auth -.->|"captcha state"| node_redis
node_auth -->|"authenticates"| node_userctl
node_api -->|"API calls"| node_personnel
node_api -->|"API calls"| node_equipment
node_api -->|"API calls"| node_safety
node_api -->|"API calls"| node_reservation
node_api -->|"API calls"| node_resources
node_api -->|"API calls"| node_reports
node_api -->|"API calls"| node_dashboard
node_api -->|"API calls"| node_notify
node_personnel -->|"persists records"| node_mysql
node_equipment -->|"persists records"| node_mysql
node_safety -->|"persists records"| node_mysql
node_reservation -->|"persists records"| node_mysql
node_resources -->|"persists records"| node_mysql
node_reports -->|"persists reports"| node_mysql
node_dashboard -->|"reads statistics"| node_mysql
node_notify -->|"dispatches"| node_push
node_push -->|"pushes updates"| node_websocket

click node_views "https://github.com/24876021/lims/blob/main/Frontend/lab-management/src/views/Dashboard.vue"
click node_router "https://github.com/24876021/lims/blob/main/Frontend/lab-management/src/router/index.js"
click node_api "https://github.com/24876021/lims/blob/main/Frontend/lab-management/src/services/api.js"
click node_auth "https://github.com/24876021/lims/blob/main/backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/config/SecurityConfig.java"
click node_userctl "https://github.com/24876021/lims/blob/main/backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/controller/UserController.java"
click node_notify "https://github.com/24876021/lims/blob/main/backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/controller/NotificationController.java"
click node_push "https://github.com/24876021/lims/blob/main/backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/service/WebSocketPushService.java"
click node_personnel "https://github.com/24876021/lims/blob/main/backend/lab-management/lab-personnel/src/main/java/com/thematrix/labmanagement/personnel/controller/PersonnelController.java"
click node_equipment "https://github.com/24876021/lims/blob/main/backend/lab-management/lab-equipment/src/main/java/com/thematrix/labmanagement/equipment/controller/EquipmentController.java"
click node_safety "https://github.com/24876021/lims/blob/main/backend/lab-management/lab-safety/src/main/java/com/thematrix/labmanagement/safety/controller/SafetyController.java"
click node_reservation "https://github.com/24876021/lims/blob/main/backend/lab-management/lab-reservation/src/main/java/com/thematrix/labmanagement/reservation/controller/ReservationController.java"
click node_resources "https://github.com/24876021/lims/blob/main/backend/lab-management/lab-resources/src/main/java/com/thematrix/labmanagement/resources/controller/ResourceController.java"
click node_reports "https://github.com/24876021/lims/blob/main/backend/lab-management/lab-reports/src/main/java/com/thematrix/labmanagement/reports/controller/ReportController.java"
click node_dashboard "https://github.com/24876021/lims/blob/main/backend/lab-management/lab-dashboard/src/main/java/com/thematrix/labmanagement/dashboard/controller/DashboardController.java"

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_views,node_router,node_api,node_user,node_browser,node_websocket toneBlue
class node_auth,node_userctl,node_notify,node_push,node_mysql,node_redis toneAmber
class node_personnel,node_equipment,node_safety,node_reservation,node_resources toneMint
class node_reports,node_dashboard toneRose
```

## Components

### Web frontend

- [Business views](https://github.com/24876021/lims/blob/main/Frontend/lab-management/src/views/Dashboard.vue): `Frontend/lab-management/src/views/Dashboard.vue`
- [Routes and guards](https://github.com/24876021/lims/blob/main/Frontend/lab-management/src/router/index.js): `Frontend/lab-management/src/router/index.js`
- [API client](https://github.com/24876021/lims/blob/main/Frontend/lab-management/src/services/api.js): `Frontend/lab-management/src/services/api.js`

### Identity and messaging

- [Authentication and RBAC](https://github.com/24876021/lims/blob/main/backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/config/SecurityConfig.java): `backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/config/SecurityConfig.java`
- [User and department APIs](https://github.com/24876021/lims/blob/main/backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/controller/UserController.java): `backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/controller/UserController.java`
- [Notification APIs](https://github.com/24876021/lims/blob/main/backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/controller/NotificationController.java): `backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/controller/NotificationController.java`
- [WebSocket push](https://github.com/24876021/lims/blob/main/backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/service/WebSocketPushService.java): `backend/lab-management/lab-common/src/main/java/com/thematrix/labmanagement/common/service/WebSocketPushService.java`

### Lab operations

- [Personnel and attendance](https://github.com/24876021/lims/blob/main/backend/lab-management/lab-personnel/src/main/java/com/thematrix/labmanagement/personnel/controller/PersonnelController.java): `backend/lab-management/lab-personnel/src/main/java/com/thematrix/labmanagement/personnel/controller/PersonnelController.java`
- [Equipment lifecycle](https://github.com/24876021/lims/blob/main/backend/lab-management/lab-equipment/src/main/java/com/thematrix/labmanagement/equipment/controller/EquipmentController.java): `backend/lab-management/lab-equipment/src/main/java/com/thematrix/labmanagement/equipment/controller/EquipmentController.java`
- [Safety and training](https://github.com/24876021/lims/blob/main/backend/lab-management/lab-safety/src/main/java/com/thematrix/labmanagement/safety/controller/SafetyController.java): `backend/lab-management/lab-safety/src/main/java/com/thematrix/labmanagement/safety/controller/SafetyController.java`
- [Lab reservations](https://github.com/24876021/lims/blob/main/backend/lab-management/lab-reservation/src/main/java/com/thematrix/labmanagement/reservation/controller/ReservationController.java): `backend/lab-management/lab-reservation/src/main/java/com/thematrix/labmanagement/reservation/controller/ReservationController.java`
- [Resource inventory](https://github.com/24876021/lims/blob/main/backend/lab-management/lab-resources/src/main/java/com/thematrix/labmanagement/resources/controller/ResourceController.java): `backend/lab-management/lab-resources/src/main/java/com/thematrix/labmanagement/resources/controller/ResourceController.java`

### Reporting and insight

- [Reports](https://github.com/24876021/lims/blob/main/backend/lab-management/lab-reports/src/main/java/com/thematrix/labmanagement/reports/controller/ReportController.java): `backend/lab-management/lab-reports/src/main/java/com/thematrix/labmanagement/reports/controller/ReportController.java`
- [Dashboard statistics](https://github.com/24876021/lims/blob/main/backend/lab-management/lab-dashboard/src/main/java/com/thematrix/labmanagement/dashboard/controller/DashboardController.java): `backend/lab-management/lab-dashboard/src/main/java/com/thematrix/labmanagement/dashboard/controller/DashboardController.java`

### Other components

- **Lab user**
- **MySQL database**
- **Redis**
- **Browser**
- **WebSocket client**

## Connections

- Lab user → Browser: uses
- Browser → Business views: renders
- Business views → Routes and guards: navigates
- Business views → API client: requests
- API client → Authentication and RBAC: API calls
- Authentication and RBAC → Redis: captcha state
- Authentication and RBAC → User and department APIs: authenticates
- API client → Personnel and attendance: API calls
- API client → Equipment lifecycle: API calls
- API client → Safety and training: API calls
- API client → Lab reservations: API calls
- API client → Resource inventory: API calls
- API client → Reports: API calls
- API client → Dashboard statistics: API calls
- API client → Notification APIs: API calls
- Personnel and attendance → MySQL database: persists records
- Equipment lifecycle → MySQL database: persists records
- Safety and training → MySQL database: persists records
- Lab reservations → MySQL database: persists records
- Resource inventory → MySQL database: persists records
- Reports → MySQL database: persists reports
- Dashboard statistics → MySQL database: reads statistics
- Notification APIs → WebSocket push: dispatches
- WebSocket push → WebSocket client: pushes updates
