Spatio-temporal machine learning model (LSTM) for drought early warning in Zimbabwe using rainfall time series and satellite imagery (NDVI, LST, soil moisture, SPI).
# Drought Early-Warning System · Zimbabwe
A production-grade early-warning platform that forecasts drought conditions across the ten provinces of Zimbabwe using a spatio-temporal LSTM. FastAPI backend, vanilla HTML/CSS/JS frontend, PDF reporting, model retraining, and live-weather validation.
**No TensorFlow needed to run.** Inference uses a pure-NumPy implementation of the trained network, so the server starts on any Python 3.10 – 3.14 install on Windows / macOS / Linux. TensorFlow remains an *optional* dependency for the (admin-only) retraining feature.
---
## Folder structure
```
drought_early_warning/
├── 1_Data/
│ └── zimbabwe_drought_dataset.csv # 15 000 monthly rows · 14 features · 10 provinces · 2010-2025
│
├── 2_Model/
│ ├── model.ipynb # training notebook (LSTM 64 → 32 + softmax-4)
│ └── 2.1_Output/ # artefacts loaded at runtime
│ ├── drought_model.keras # original Keras model (reference / retraining)
│ ├── model_weights.npz # ★ portable weights used by NumPy inference
│ ├── model_config.json # ★ layer configuration for NumPy inference
│ ├── scaler.pkl
│ ├── label_encoder.pkl
│ └── metadata.pkl
│
├── 3_Frontend/ # vanilla HTML / CSS / JS — no build step
│ ├── index.html # split-screen login page
│ ├── dashboard.html # 8-view dashboard (sidebar shell)
│ ├── styles.css # earth-tone design system
│ ├── auth.js # session helpers + login wiring
│ ├── app.js # all dashboard logic
│ └── assets/
│
├── backend/
│ ├── app.py # FastAPI application
│ ├── nn_inference.py # ★ pure-NumPy LSTM forward pass (no TF)
│ ├── convert_model.py # one-time: .keras → .npz (needs TF, already run)
│ ├── requirement …