Logo Lanfrica

dukemawex/Africa-water-watch

Domaine:

environment and energy

Type de record:

software
Créateur:
duk
HĂ´te:
# AquaWatch Africa 🌊 A production-grade water quality monitoring platform for West Africa (Nigeria, Ghana, Senegal) and Southern Africa (South Africa, Zimbabwe, Zambia). Monitors boreholes, surface water (rivers, lakes, reservoirs), and rural community water points. ## Features - **Real-time water quality monitoring** — Track pH, TDS, turbidity, fluoride, nitrate, coliform - **Interactive map** — Leaflet.js map with Sentinel-2 satellite overlay - **AI-powered analysis** — OpenRouter API (Gemma + Llama fallback) for treatment recommendations - **Maintenance queue** — Automated rule-based service scheduling with 10 trigger rules - **SMS alerts** — Africa's Talking API for critical contamination notifications - **Satellite data** — Copernicus Sentinel-2 NDWI and turbidity indices - **PWA support** — Offline-capable for 2G mobile users - **Multi-language** — English, French, Hausa, Swahili ## Tech Stack | Layer | Technology | |-------|-----------| | Frontend | React 18 + Vite + TypeScript + Tailwind CSS v3 | | Backend | FastAPI Python 3.11 + SQLAlchemy async + Alembic | | Database | PostgreSQL 15 + PostGIS | | Cache | Redis 7 | | AI | OpenRouter API (google/gemma-3-12b-it:free → meta-llama/llama-3.1-8b-instruct:free) | | Maps | Leaflet.js + React-Leaflet | | Charts | Recharts | | Auth | JWT python-jose + bcrypt | | SMS | Africa's Talking API | | Deploy | Docker Compose + DigitalOcean App Platform | | CI/CD | GitHub Actions | | State | Zustand | ## Quick Start ### Prerequisites - Docker & Docker Compose - Node.js 20+ - Python 3.11+ ### Local Development ```bash # 1. Clone and configure cp .env.example .env # Fill in your API keys in .env # 2. Start all services docker-compose up -d # 3. Run database migrations docker-compose exec backend alembic upgrade head # 4. Seed sample data docker-compose exec backend python -m app.seeds # 5. Access the app # Frontend: localhost # Backend API: localhost # API Docs: localhost ``` …