Office Energy Monitor
Real-time energy tracking for 15 devices across 3 rooms a zero-polling SSE dashboard and a Discord bot on one backend.

About the project
Office Energy Monitor tracks the energy usage of 15 devices across 3 rooms in real time. A live dashboard is driven entirely by Server-Sent Events no polling and a Discord bot (!status, !room, !usage) answers with LLM-phrased summaries backed by 3-key Groq API failover. Both interfaces share one backend, so they can never contradict each other. A centralized alerts engine posts deduplicated after-hours and prolonged-usage alerts to Discord, and energy accounting is persisted to PostgreSQL with explicit downtime-gap handling so totals survive restarts. The whole system runs under Docker Compose.
The problem
Device energy usage in an office is invisible until the bill arrives; polling dashboards waste resources and lag behind reality, naive alerting spams the same warning repeatedly, and in-memory accounting silently loses data every time the server restarts.
The solution
One backend as the single source of truth, pushing state to an SSE dashboard and a Discord bot simultaneously; a centralized alerts engine that deduplicates before posting; and restart-safe accounting persisted to PostgreSQL with explicit handling of downtime gaps, so recorded totals stay honest across crashes and deploys.
Why I built it
I wanted to design a real-time system properly one source of truth serving two very different interfaces, and accounting that stays correct across restarts instead of just looking correct while the process is up.
Tech stack
- React
- Node.js
- Express
- PostgreSQL
- Prisma
- SSE
- discord.js
- Groq LLM API
- Docker
Feedback
Tried this project or read the case study? I'd love to hear your thoughts.