Live wildfire desk for Algeria and the Mediterranean.
hariq.gghub.space
# Hariq
Live wildfire desk for Algeria and the Mediterranean.
Watch NASA VIIRS heat on a map, Copernicus EFFIS fire danger and burned area, satellite stills, a news feed, and a visitor chat.
**Live:**
hariq.gghub.space
designed by aymenhamza.com
## What you see
- **Heat:** NASA FIRMS VIIRS (Suomi NPP + NOAA-20), last 24 hours. Each dot is a 375 m hot pixel, not an official fire name.
- **°C:** VIIRS I4 brightness temperature in Celsius. The I4 band saturates near 94 °C. That is not flame temperature.
- **Satellite:** NASA GIBS true-color stills and a map overlay.
- **Danger / Burned:** Copernicus EFFIS WMS (Fire Weather Index and season burned-area outlines).
- **News:** public RSS (France 24, BBC, Al Jazeera, NASA Earth Observatory, Google News).
- **Chat:** live messages on this desk (English names). No account.
This is a public watch, not a civil-protection channel. Call **14** or **1021** in Algeria to report a fire.
## Stack
- Vite + TypeScript (vanilla) frontend, MapLibre GL
- Node HTTP API, SQLite (`node:sqlite`)
- Nginx in production, API on loopback `:8788`
## Run locally
Needs Node 22+ (for `node:sqlite`).
```bash
npm install
node api/server.mjs
```
In another terminal:
```bash
npm run dev
```
Vite proxies `/api` to `
127.0.0.1`. Production:
```bash
npm run build
HOST=127.0.0.1 PORT=8788 node api/server.mjs
```
The API also serves `dist/` and `/uploads/`.
## API
| Method | Path | Notes |
|--------|------|--------|
| GET | `/api/health` | Cache status |
| GET | `/api/fires?region=algeria\|maghreb\|med&confidence=all\|nominal\|high` | FIRMS detections |
| GET | `/api/alerts` | New / high-heat rings |
| GET | `/api/feed?region=algeria` | News + GIBS stills |
| GET | `/api/chat` | Messages |
| POST | `/api/chat` | `{ "author": "Guest-1000", "body": "..." }` |
| GET | `/api/chat/stream` | SSE |
Regions: `algeria` (home), `maghreb`, `med` (Mediterranean basin).
## Data sources
- NASA FIRMS active-fire CSVs
- NASA GIBS / …