# aymen-bendhaiba/pad_lock- architecture

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

- Interactive diagram: https://gitdiagram.com/aymen-bendhaiba/pad_lock-
- Repository: https://github.com/aymen-bendhaiba/pad_lock-

## Overview

This is a lock-management product: operators authenticate, monitor lock locations and alerts, configure locks and geofences, issue device commands, and review reports. The backend exposes domain APIs, while a separate TCP subsystem and JT701D protocol modules support device communication. The sampled controllers explicitly delegate to their services; source for most frontend components and backend service internals was not provided, so their internal wiring and persistence links are omitted.

Main entry points: [`pad_lock_back/src/auth/auth.service.ts`](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/auth/auth.service.ts) (Auth service), [`pad_lock_back/src/dashboard/dashboard.controller.ts`](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/dashboard/dashboard.controller.ts) (Dashboard API), [`pad_lock_back/src/auth/auth.controller.ts`](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/auth/auth.controller.ts) (Authentication API), [`pad_lock_back/src/locks/locks.controller.ts`](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/locks/locks.controller.ts) (Lock API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Operator interface"]
  node_dashboard_ui["Dashboard"]
  node_live_map_ui["Live map<br/>[live-map-panel.tsx]"]
  node_geofence_ui["Geofence workspace"]
  node_alarms_ui["Alarms<br/>[alarms-panel.tsx]"]
  node_commands_ui["Commands<br/>[commands-panel.tsx]"]
  node_config_ui["Configurations"]
  node_reports_ui["Reports<br/>[reports-panel.tsx]"]
end

subgraph group_identity["Identity"]
  node_login["Authentication API<br/>[auth.controller.ts]"]
  node_auth_service["Auth service<br/>[auth.service.ts]"]
  node_users["User service<br/>[users.service.ts]"]
end

subgraph group_device["Lock operations"]
  node_locks_api["Lock API"]
  node_locks_service["Lock service<br/>[locks.service.ts]"]
  node_commands_api["Command API"]
  node_commands_service["Command service"]
  node_rfid_api["RFID API<br/>[rfid.controller.ts]"]
  node_rfid_service["RFID service<br/>[rfid.service.ts]"]
  node_configuration_api["Lock configuration API"]
  node_geofences_api["Geofence API"]
  node_geofences_service["Geofence service"]
  node_boundaries_api["Boundary API"]
end

subgraph group_monitoring["Monitoring and insights"]
  node_positions_api["Position API"]
  node_events_api["Lock events API"]
  node_events_service["Lock events service"]
  node_dashboard_api["Dashboard API"]
  node_reports_api["Reports API"]
end

subgraph group_transport["Device transport"]
  node_tcp_gateway["TCP gateway"]
  node_tcp_connections["TCP connections"]
  node_jt701d_ascii["JT701D ASCII parser"]
  node_jt701d_binary["JT701D binary parser"]
  node_jt701d_commands["JT701D commands<br/>[jt701d-commands.ts]"]
end

node_operator(("Operator"))

node_operator -->|"views"| node_dashboard_ui
node_operator -->|"monitors"| node_live_map_ui
node_operator -->|"manages"| node_geofence_ui
node_operator -->|"reviews"| node_alarms_ui
node_operator -->|"issues"| node_commands_ui
node_operator -->|"configures"| node_config_ui
node_operator -->|"reviews"| node_reports_ui
node_login -->|"delegates"| node_auth_service
node_auth_service -->|"looks up users"| node_users
node_locks_api -->|"delegates"| node_locks_service
node_commands_api -->|"delegates"| node_commands_service
node_rfid_api -->|"delegates"| node_rfid_service
node_geofences_api -->|"delegates"| node_geofences_service
node_events_api -->|"delegates"| node_events_service
node_dashboard_api --> node_dashboard_api

click node_dashboard_ui "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_front/app/dashboard/dashboard-panel.tsx"
click node_live_map_ui "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_front/app/live-map/live-map-panel.tsx"
click node_geofence_ui "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_front/app/geofence/geofence-workspace.tsx"
click node_alarms_ui "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_front/app/alarms/alarms-panel.tsx"
click node_commands_ui "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_front/app/commands/commands-panel.tsx"
click node_config_ui "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_front/app/configurations/configurations-panel.tsx"
click node_reports_ui "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_front/app/reports/reports-panel.tsx"
click node_login "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/auth/auth.controller.ts"
click node_auth_service "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/auth/auth.service.ts"
click node_users "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/users/users.service.ts"
click node_locks_api "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/locks/locks.controller.ts"
click node_locks_service "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/locks/locks.service.ts"
click node_commands_api "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/commands/commands.controller.ts"
click node_commands_service "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/commands/commands.service.ts"
click node_rfid_api "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/rfid/rfid.controller.ts"
click node_rfid_service "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/rfid/rfid.service.ts"
click node_configuration_api "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/lock-configurations/lock-configurations.controller.ts"
click node_geofences_api "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/geofences/geofences.controller.ts"
click node_geofences_service "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/geofences/geofences.service.ts"
click node_boundaries_api "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/geo-boundaries/geo-boundaries.controller.ts"
click node_positions_api "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/positions/positions.controller.ts"
click node_events_api "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/lock-events/lock-events.controller.ts"
click node_events_service "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/lock-events/lock-events.service.ts"
click node_dashboard_api "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/dashboard/dashboard.controller.ts"
click node_reports_api "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/reports/reports.controller.ts"
click node_tcp_gateway "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/tcp/tcp-gateway.service.ts"
click node_tcp_connections "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/tcp/tcp-connections.service.ts"
click node_jt701d_ascii "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/tcp/parsers/jt701d-ascii.parser.ts"
click node_jt701d_binary "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/tcp/parsers/jt701d-binary.parser.ts"
click node_jt701d_commands "https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/protocol/jt701d-commands.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_dashboard_ui,node_live_map_ui,node_geofence_ui,node_alarms_ui,node_commands_ui,node_config_ui,node_reports_ui toneBlue
class node_login,node_auth_service,node_users toneAmber
class node_locks_api,node_locks_service,node_commands_api,node_commands_service,node_rfid_api,node_rfid_service,node_configuration_api,node_geofences_api,node_geofences_service,node_boundaries_api toneMint
class node_positions_api,node_events_api,node_events_service,node_dashboard_api,node_reports_api toneRose
class node_tcp_gateway,node_tcp_connections,node_jt701d_ascii,node_jt701d_binary,node_jt701d_commands,node_operator toneIndigo
```

## Components

### Operator interface

- [Dashboard](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_front/app/dashboard/dashboard-panel.tsx): `pad_lock_front/app/dashboard/dashboard-panel.tsx`
- [Live map](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_front/app/live-map/live-map-panel.tsx): `pad_lock_front/app/live-map/live-map-panel.tsx`
- [Geofence workspace](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_front/app/geofence/geofence-workspace.tsx): `pad_lock_front/app/geofence/geofence-workspace.tsx`
- [Alarms](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_front/app/alarms/alarms-panel.tsx): `pad_lock_front/app/alarms/alarms-panel.tsx`
- [Commands](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_front/app/commands/commands-panel.tsx): `pad_lock_front/app/commands/commands-panel.tsx`
- [Configurations](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_front/app/configurations/configurations-panel.tsx): `pad_lock_front/app/configurations/configurations-panel.tsx`
- [Reports](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_front/app/reports/reports-panel.tsx): `pad_lock_front/app/reports/reports-panel.tsx`

### Identity

- [Authentication API](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/auth/auth.controller.ts): `pad_lock_back/src/auth/auth.controller.ts`
- [Auth service](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/auth/auth.service.ts): `pad_lock_back/src/auth/auth.service.ts`
- [User service](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/users/users.service.ts): `pad_lock_back/src/users/users.service.ts`

### Lock operations

- [Lock API](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/locks/locks.controller.ts): `pad_lock_back/src/locks/locks.controller.ts`
- [Lock service](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/locks/locks.service.ts): `pad_lock_back/src/locks/locks.service.ts`
- [Command API](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/commands/commands.controller.ts): `pad_lock_back/src/commands/commands.controller.ts`
- [Command service](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/commands/commands.service.ts): `pad_lock_back/src/commands/commands.service.ts`
- [RFID API](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/rfid/rfid.controller.ts): `pad_lock_back/src/rfid/rfid.controller.ts`
- [RFID service](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/rfid/rfid.service.ts): `pad_lock_back/src/rfid/rfid.service.ts`
- [Lock configuration API](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/lock-configurations/lock-configurations.controller.ts): `pad_lock_back/src/lock-configurations/lock-configurations.controller.ts`
- [Geofence API](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/geofences/geofences.controller.ts): `pad_lock_back/src/geofences/geofences.controller.ts`
- [Geofence service](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/geofences/geofences.service.ts): `pad_lock_back/src/geofences/geofences.service.ts`
- [Boundary API](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/geo-boundaries/geo-boundaries.controller.ts): `pad_lock_back/src/geo-boundaries/geo-boundaries.controller.ts`

### Monitoring and insights

- [Position API](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/positions/positions.controller.ts): `pad_lock_back/src/positions/positions.controller.ts`
- [Lock events API](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/lock-events/lock-events.controller.ts): `pad_lock_back/src/lock-events/lock-events.controller.ts`
- [Lock events service](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/lock-events/lock-events.service.ts): `pad_lock_back/src/lock-events/lock-events.service.ts`
- [Dashboard API](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/dashboard/dashboard.controller.ts): `pad_lock_back/src/dashboard/dashboard.controller.ts`
- [Reports API](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/reports/reports.controller.ts): `pad_lock_back/src/reports/reports.controller.ts`

### Device transport

- [TCP gateway](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/tcp/tcp-gateway.service.ts): `pad_lock_back/src/tcp/tcp-gateway.service.ts`
- [TCP connections](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/tcp/tcp-connections.service.ts): `pad_lock_back/src/tcp/tcp-connections.service.ts`
- [JT701D ASCII parser](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/tcp/parsers/jt701d-ascii.parser.ts): `pad_lock_back/src/tcp/parsers/jt701d-ascii.parser.ts`
- [JT701D binary parser](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/tcp/parsers/jt701d-binary.parser.ts): `pad_lock_back/src/tcp/parsers/jt701d-binary.parser.ts`
- [JT701D commands](https://github.com/aymen-bendhaiba/pad_lock-/blob/main/pad_lock_back/src/protocol/jt701d-commands.ts): `pad_lock_back/src/protocol/jt701d-commands.ts`

### Other components

- **Operator**

## Connections

- Operator → Dashboard: views
- Operator → Live map: monitors
- Operator → Geofence workspace: manages
- Operator → Alarms: reviews
- Operator → Commands: issues
- Operator → Configurations: configures
- Operator → Reports: reviews
- Authentication API → Auth service: delegates
- Auth service → User service: looks up users
- Lock API → Lock service: delegates
- Command API → Command service: delegates
- RFID API → RFID service: delegates
- Geofence API → Geofence service: delegates
- Lock events API → Lock events service: delegates
- Dashboard API → Dashboard API
