How fonsecabarreto/envirosense-temperature-alert-system works
Envirosense collects temperature and humidity from an Arduino device, persists readings through an API, alerts registered contacts when temperature exceeds 30°C, and provides a Flutter reports application. The server routes and persistence/email calls are supported by sampled source. Flutter internals and Arduino implementation were not sampled, so their documented roles are shown without speculative internal wiring.
Main entry points: index.js Express API · global_repository.dart Global repository · index.ino Arduino monitor · metrics.js Metrics controller
Components 17
Sensing device
- Arduino monitor
arduino/index/index.ino
API and persistence
- Express API
server/index.js - Metric model
server/src/models/metrics.js - Metrics controller
server/src/controllers/metrics.js - Users controller
server/src/controllers/users.js - Mongo adapter
server/src/database/MongoAdapter.js - MongoDB
Safety alerts
- Threshold alert
server/index.js - Email sender
server/src/vendors/NodeMailer.js - Gmail SMTP
Reports application
- Flutter app
app-trablho/flutter_application_sig/lib/main.dart - Report screens
app-trablho/flutter_application_sig/lib/screens - App controllers
app-trablho/flutter_application_sig/lib/controllers - Global repository
app-trablho/flutter_application_sig/lib/repositories/global_repository.dart - Report models
app-trablho/flutter_application_sig/lib/domain/models.dart
Other components
- System operator
- Alert recipients
Connections 17
- System operator → Arduino monitor: configures
- Arduino monitor → Express API: posts readings
- Express API → Metric model: creates DTO
- Express API → Metrics controller: stores and lists
- Metrics controller → Mongo adapter: uses database
- Mongo adapter → MongoDB: connects
- Express API → Threshold alert: checks threshold
- Threshold alert → Users controller: lists recipients
- Threshold alert → Email sender: sends alert
- Email sender → Gmail SMTP: sends mail
- Gmail SMTP → Alert recipients: delivers alert
- System operator → Flutter app: views reports
- Flutter app → Report screens: presents
- Report screens → App controllers: uses
- App controllers → Global repository: requests data
- Global repository → Express API: fetches reports
- Global repository → Report models: uses models