How devhome915/central-residencial works
Central Residencial is a LAN-hosted home-event dashboard and API: users connect with a token, view device status and event history, and can simulate or submit events; camera monitoring is a separate static page backed by MediaMTX. The backend separates HTTP entry points, application use cases, domain models, repository ports, and SQLite/WebSocket adapters. The README documents the intended event-to-panel flow and camera capabilities; source-index references and excerpts support the wiring shown, while some route and client details remain unsampled.
Main entry points: app.ts App composition · use-cases Event use cases · event.routes.ts Event routes · device.routes.ts Device routes
Components 26
User interfaces
- Event dashboard
public/app.js - Camera monitor
public/cameras.js
HTTP access
- Event routes
src/adapters/http/event.routes.ts - Event controller
src/adapters/http/event.controller.ts - Device routes
src/adapters/http/device.routes.ts - Device controller
src/adapters/http/device.controller.ts - Token authentication
src/middlewares/auth.middleware.ts
Application logic
- App composition
src/app.ts - Event service
src/application/event.service.ts - Device service
src/application/device.service.ts - Event use cases
src/application/use-cases - Device use cases
src/application/use-cases - Event DTOs
src/application/dto - Node server
src/server.ts
Domain model
- Device model
src/domain/device.ts - Event model
src/domain/event.ts - Device repository port
src/ports/device-repository.port.ts - Event repository port
src/ports/event-repository.port.ts - Publisher port
src/ports/event-publisher.port.ts
Persistence and realtime
- SQLite device adapter
src/adapters/repositories/sqlite-device.repository.ts - SQLite event adapter
src/adapters/repositories/sqlite-event.repository.ts - SQLite database
src/database/database.ts - WebSocket server
src/adapters/websocket/websocket-server.ts - WebSocket publisher
src/adapters/websocket/websocket-event.publisher.ts
Other components
- Resident
- MediaMTX streams
Connections 36
- Resident → Event dashboard: uses
README.md - Event dashboard → Event routes: requests events
README.md - Event dashboard → Device routes: manages devices
README.md - Resident → Camera monitor: opens monitor
README.md - Camera monitor → MediaMTX streams: loads streams
README.md - Event routes → Token authentication: guards routes
src/adapters/http/event.routes.ts - Event routes → Event controller: dispatches to
src/adapters/http/event.routes.ts - Device routes → Token authentication: guards routes
src/adapters/http/device.routes.ts - Device routes → Device controller: dispatches to
src/adapters/http/device.routes.ts - Event controller → Event service: calls
src/adapters/http/event.controller.ts - Device controller → Device service: calls
src/adapters/http/device.controller.ts - App composition → Event service: constructs
src/app.ts - App composition → Device service: constructs
src/app.ts - App composition → Event routes: mounts
src/app.ts - App composition → Device routes: mounts
src/app.ts - Event service → Event use cases: delegates to
src/application/event.service.ts - Device service → Device use cases: delegates to
src/application/device.service.ts - Event use cases → Event DTOs: uses
src/application/use-cases/create-event.use-case.ts - Event use cases → Event repository port: persists through
src/application/use-cases/create-event.use-case.ts - Event use cases → Publisher port: publishes through
src/application/use-cases/create-event.use-case.ts - Event use cases → Device repository port: looks up devices
src/application/use-cases/create-event.use-case.ts - Device use cases → Device repository port: uses
src/application/use-cases/create-device.use-case.ts - Device use cases → Event repository port: reads event history
src/application/use-cases/list-devices.use-case.ts - Event use cases → Event model: creates events
src/application/use-cases/create-event.use-case.ts - Device use cases → Device model: creates devices
src/application/use-cases/create-device.use-case.ts - App composition → SQLite event adapter: configures
src/app.ts - App composition → SQLite device adapter: configures
src/app.ts - SQLite event adapter → SQLite database: reads and writes
src/adapters/repositories/sqlite-event.repository.ts - SQLite device adapter → SQLite database: reads and writes
src/adapters/repositories/sqlite-device.repository.ts - SQLite event adapter → Event model: maps events
src/adapters/repositories/sqlite-event.repository.ts - SQLite device adapter → Device model: maps devices
src/adapters/repositories/sqlite-device.repository.ts - Node server → App composition: starts app
src/server.ts - Node server → WebSocket server: starts realtime
src/server.ts - WebSocket server → WebSocket publisher: registers publisher
src/adapters/websocket/websocket-server.ts - WebSocket publisher → Publisher port: implements
src/adapters/websocket/websocket-event.publisher.ts - App composition → WebSocket publisher: injects publisher