How duc-tien/backendfablab works
IOT.CleanArchitecture is an industrial monitoring and management API. Users query or mutate machines, workers, projects, and production details through controllers; MediatR dispatches feature handlers, which read or write repositories backed by SQL Server, then return DTO results. A parallel telemetry path connects SCADA hosting to MQTT communication and buffering, while SignalR exposes notification delivery. The tree confirms these subsystems, but ScadaHost and several handlers were not sampled, so their internal telemetry and notification arrows are intentionally limited.
Components 21
HTTP API
- Machine Controller
IOT.Api/Controllers/MachineController.cs - Detail Controller
IOT.Api/Controllers/DetailController.cs - Worker Controller
IOT.Api/Controllers/WorkerController.cs - Project Controller
IOT.Api/Controllers/ProjectController.cs - API Runtime
IOT.Api/Program.cs
Application Workflows
- MediatR Dispatcher
IOT.Application/ApplicationServiceRegistration.cs - Machine Workflows
IOT.Application/Features/Machine - Detail Workflows
IOT.Application/Features/Detail - Worker Workflows
IOT.Application/Features/Worker - Project Workflows
IOT.Application/Features/Project
Telemetry Runtime
- SCADA Host
IOT.Api/Worker/ScadaHost.cs - Telemetry Buffer
IOT.Api/Worker/Buffer.cs - Managed MQTT
IOT.Infastructure/Communication/ManagedMqttClient.cs
Persistence
- Unit Of Work
IOT.Persistence/Repository/Generic/UnitOfWork.cs - Entity Repositories
IOT.Persistence/Repository/Generic/Repository.cs - IOT SQL Database
IOT.Persistence/DatabaseContext/IOTDbContext.cs
Realtime Delivery
- Notification Hub
IOT.Api/Hubs/NotificationHub.cs
Other components
- API User
- Industrial Devices
- Realtime Clients
- MQTT Broker
Connections 32
- API User → Machine Controller: calls HTTP
- API User → Detail Controller: calls HTTP
- API User → Worker Controller: calls HTTP
- API User → Project Controller: calls HTTP
- Machine Controller → MediatR Dispatcher: dispatches
- Detail Controller → MediatR Dispatcher: dispatches
- Worker Controller → MediatR Dispatcher: dispatches
- Project Controller → MediatR Dispatcher: dispatches
- MediatR Dispatcher → Machine Workflows: routes requests
- MediatR Dispatcher → Detail Workflows: routes requests
- MediatR Dispatcher → Worker Workflows: routes requests
- MediatR Dispatcher → Project Workflows: routes requests
- Machine Workflows → Unit Of Work: reads/writes
- Detail Workflows → Unit Of Work: reads/writes
- Worker Workflows → Unit Of Work: reads/writes
- Project Workflows → Unit Of Work: reads/writes
- Unit Of Work → Entity Repositories: uses repositories
- Entity Repositories → IOT SQL Database: queries/persists
- Machine Workflows → Machine Controller: returns DTOs
- Detail Workflows → Detail Controller: returns DTOs
- Worker Workflows → Worker Controller: returns DTOs
- Project Workflows → Project Controller: returns DTOs
- Machine Controller → API User: returns results
- Detail Controller → API User: returns results
- Worker Controller → API User: returns results
- Project Controller → API User: returns results
- API Runtime → Managed MQTT: registers service
- API Runtime → SCADA Host: hosts worker
- API Runtime → Notification Hub: maps hub
- Industrial Devices → MQTT Broker: publishes telemetry
- MQTT Broker → Managed MQTT: delivers messages
- Realtime Clients → Notification Hub: opens connection