How cyclone03/gridd-smart-environment works
GRIDD is a smart-environment dashboard for collecting sensor observations, assessing comfort and threshold alerts, and presenting current conditions and history. Observations enter through the optional Kafka consumer or simulator, then the shared processor validates and persists them, evaluates alerts and comfort, and broadcasts realtime events. The web app provides dashboard, observation, alert and location views. The README documents the API and realtime capabilities; several frontend-to-backend connections are not shown in the sampled source, so those links are marked unverified.
Main entry points: observation.processor.ts Observation processor · analysis.service.ts Comfort analysis · api.ts HTTP API client · alerts.service.ts Alert evaluation
Components 33
Ingestion
- Kafka consumer
apps/api/src/kafka/kafka.consumer.service.ts - Kafka mapping
apps/api/src/kafka/kafka-message.mapper.ts - Observation simulator
apps/api/src/simulator/simulator.service.ts - Observation processor
apps/api/src/observations/observation.processor.ts - Input validation
apps/api/src/observations/observation-input.validator.ts - Observation input
apps/api/src/observations/interfaces/observation-input.interface.ts
Analysis & alerts
- Comfort analysis
apps/api/src/analysis/analysis.service.ts - Comfort configuration
apps/api/src/analysis/environment.config.ts - Comfort results
apps/api/src/analysis/comfort.types.ts - Alert evaluation
apps/api/src/alerts/alerts.service.ts
API & realtime
- Realtime gateway
apps/api/src/realtime/realtime.gateway.ts - Observation endpoints
apps/api/src/observations/observations.controller.ts - Comfort endpoint
apps/api/src/analysis/analysis.controller.ts - Alert endpoints
apps/api/src/alerts/alerts.controller.ts - Health endpoint
apps/api/src/health/health.controller.ts
Web dashboard
- Dashboard views
apps/web/src/views/DashboardView.vue - Observation view
apps/web/src/views/ObservationsView.vue - Alerts view
apps/web/src/views/AlertsView.vue - Locations view
apps/web/src/views/LocationsView.vue - Dashboard state
apps/web/src/stores/dashboard.store.ts - Observation state
apps/web/src/stores/observations.store.ts - Alert state
apps/web/src/stores/alerts.store.ts - Location state
apps/web/src/stores/locations.store.ts - HTTP API client
apps/web/src/services/api.ts - Realtime client
apps/web/src/services/realtime.ts - Observation chart
apps/web/src/components/charts/ObservationChart.vue - Comfort display
apps/web/src/components/dashboard/ComfortCard.vue - Location tree
apps/web/src/components/locations/LocationTreeNode.vue
Persistence
- Observation service
apps/api/src/observations/observations.service.ts - Observation records
apps/api/src/observations/entities/observation.entity.ts - Alert records
apps/api/src/alerts/entities/alert.entity.ts - Database configuration
apps/api/src/database/typeorm.config.ts
Other components
- Dashboard user
Connections 36
- Kafka consumer → Kafka mapping: maps messages
apps/api/src/kafka/kafka.consumer.service.ts - Kafka consumer → Observation processor: processes input
apps/api/src/kafka/kafka.consumer.service.ts - Kafka mapping → Observation input: creates
apps/api/src/kafka/kafka-message.mapper.ts - Observation simulator → Observation processor: processes samples
apps/api/src/simulator/simulator.service.ts - Observation processor → Input validation: validates
apps/api/src/observations/observation.processor.ts - Observation processor → Observation service: persists
apps/api/src/observations/observation.processor.ts - Observation service → Observation records: reads and writes
apps/api/src/observations/observations.service.ts - Observation processor → Alert evaluation: evaluates
apps/api/src/observations/observation.processor.ts - Alert evaluation → Alert records: reads and writes
apps/api/src/alerts/alerts.service.ts - Observation processor → Comfort analysis: requests comfort
apps/api/src/observations/observation.processor.ts - Comfort analysis → Observation records: queries measurements
apps/api/src/analysis/analysis.service.ts - Comfort analysis → Comfort configuration: uses thresholds
apps/api/src/analysis/analysis.service.ts - Comfort analysis → Comfort results: returns result
apps/api/src/analysis/analysis.service.ts - Alert evaluation → Comfort configuration: uses thresholds
apps/api/src/alerts/alerts.service.ts - Observation processor → Realtime gateway: emits updates
apps/api/src/observations/observation.processor.ts - Observation endpoints → Observation service: lists observations
apps/api/src/observations/observations.controller.ts - Comfort endpoint → Comfort analysis: requests comfort
apps/api/src/analysis/analysis.controller.ts - Alert endpoints → Alert evaluation: filters alerts
apps/api/src/alerts/alerts.controller.ts - Database configuration → Observation records: registers entity
apps/api/src/database/typeorm.config.ts - Database configuration → Alert records: registers entity
apps/api/src/database/typeorm.config.ts - Dashboard user → Dashboard views: uses dashboard
- Dashboard views → Dashboard state: reads state
- Observation view → Observation state: reads state
- Alerts view → Alert state: reads state
- Locations view → Location state: reads state
- Dashboard state → Observation state: uses observations
apps/web/src/stores/dashboard.store.ts - Dashboard state → Alert state: uses alerts
apps/web/src/stores/dashboard.store.ts - Observation state → HTTP API client: requests data
- Alert state → HTTP API client: requests data
- Location state → HTTP API client: requests data
- HTTP API client → Observation endpoints: calls API
- HTTP API client → Alert endpoints: calls API
- Realtime client → Realtime gateway: receives events
- Dashboard views → Comfort display: displays comfort
- Observation view → Observation chart: renders history
- Locations view → Location tree: renders hierarchy