An industrial IoT ecosystem protecting Ethiopia's exports using ESP32 sensor nodes, Firebase Realtime Database, an Electron desktop command center for operations, and an Expo mobile suite for investor monitoring
# Smart-Megazen Control Center
Real-time IoT warehouse environmental monitoring desktop app built with **Electron 31 + React 18 + Vite 5 + Tailwind CSS 3 + Firebase**.
---
## Features
- **Live Sensor Dashboard** — 10-node real-time grid with temperature, humidity, battery, and RSSI
- **Critical Alert Overlay** — automatic full-screen alert when a node breaches thresholds or goes offline
- **Humidity Heatmap** — visual warehouse floor map colored by humidity readings
- **PDF Reports** — exportable sensor snapshots via native save dialog
- **Per-node Settings** — configurable thresholds (max humidity, temp range, battery floor)
- **Firebase Realtime Database** — live push updates from ESP32 sensor nodes
- **Offline-safe** — mock data preview mode when Firebase is not configured
---
## Getting Started
### 1. Install dependencies
```bash
npm install
```
### 2. Configure Firebase (optional for preview)
```bash
cp .env.example .env.local
# Fill in your Firebase credentials in .env.local
```
### 3. Run the app
```bash
npm start
```
> **Linux (Wayland):** The `npm start` script includes the correct `--ozone-platform=wayland` flags automatically.
---
## Project Structure
```
Smart-Megazen/
├── electron/
│ ├── main.js # Electron main process, IPC handlers, security
│ └── preload.js # Secure IPC bridge → window.megazen API
├── src/
│ ├── components/
│ │ ├── Sidebar.jsx # Navigation + live status pills
│ │ ├── Dashboard.jsx # KPI cards + sensor grid
│ │ ├── SensorGrid.jsx # Sortable live sensor table
│ │ ├── Map.jsx # Humidity heatmap grid
│ │ ├── CriticalAlert.jsx # Full-screen critical overlay
│ │ ├── Reports.jsx # PDF export interface
│ │ └── Settings.jsx # Per-node threshold config
│ ├── context/
│ │ └── SensorContext.jsx # Global real-time state + watchdog
│ ├── services/
│ │ └── firebase.js # Firebase SDK wrapper (null-safe)
│ ├── constants/
│ …