Real-time AQI, weather, fire detection, and atmospheric analytics.
Frontend (HTML/CesiumJS)
↓
Go API Gateway :8080
↓
Python Data Engine :8000
├── Open-Meteo (weather + AQ) — FREE, no key
├── WAQI / AQICN — FREE key required
└── NASA FIRMS — FREE key required
| Source | Data | Key needed |
|---|---|---|
| Open-Meteo | Weather, PM2.5, PM10, NO2, O3, SO2, CO, AQI | ❌ None |
| WAQI | Station AQI, dominant pollutant | ✅ Free |
| NASA FIRMS | Active fire detections (VIIRS) | ✅ Free |
| Nominatim | Geocoding / reverse geocoding | ❌ None |
cp .env.example .env
# Edit .env and set WAQI_TOKEN and NASA_FIRMS_KEYdocker compose up --buildFrontend: http://localhost:3000
Gateway: http://localhost:8080/health
Engine: http://localhost:8000/docs
cd data_engine
pip install -r requirements.txt
uvicorn main:app --reload --port 8000cd backend
go mod tidy
go run .Open frontend/index.html in a browser or serve it:
cd frontend
python -m http.server 3000GET /api/v1/weather/current?lat=&lon=
GET /api/v1/weather/forecast?lat=&lon=&days=7
GET /api/v1/weather/hourly?lat=&lon=&hours=48
GET /api/v1/aqi/current?lat=&lon=
GET /api/v1/aqi/forecast?lat=&lon=&hours=72
GET /api/v1/aqi/stations?lat=&lon=&radius=25000
GET /api/v1/aqi/heatmap?lat=&lon=&resolution=0.25&radius_deg=2
GET /api/v1/satellite/fires?lat=&lon=&radius=500
GET /api/v1/satellite/smoke?lat=&lon=
GET /api/v1/alerts/active?lat=&lon=
GET /api/v1/alerts/history?lat=&lon=&days=7
GET /api/v1/analytics/aqi-trend?lat=&lon=&hours=168
GET /api/v1/analytics/health-risk?lat=&lon=
GET /api/v1/analytics/pollution-sources?lat=&lon=
GET /api/v1/dashboard?lat=&lon=
| Layer | Tech |
|---|---|
| Frontend | Vanilla JS, CesiumJS 1.122, Canvas sparklines |
| Gateway | Go 1.22, Gin |
| Data Engine | Python 3.12, FastAPI, httpx |
| Cache | In-memory (default) or Redis |
| Infra | Docker Compose, Nginx |
The architecture is designed for Prexus Atmos modules:
- Atmos Vision — satellite imagery overlays (Sentinel-5P via Copernicus)
- Atmos Radar — precipitation radar from NOAA/MRMS
- Atmos Predict — LSTM/TFT AQI forecasting model (replace Open-Meteo fallback)
- Atmos Earth — Digital twin storm/flood simulation
- Atmos Sentinel — IoT sensor ingestion via MQTT