Skip to content

sekacorn/WaterAccessOptimizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WaterAccessOptimizer

Production-ready, full-stack web application for improving access to clean water through data-driven solutions

WaterAccessOptimizer is an open-source platform designed to help NGOs, government agencies, and researchers make data-driven decisions about water access projects. It integrates hydrological data, community data, and infrastructure data to provide risk assessments, interactive visualizations, and data management tools.

Current Status: MVP Complete (v1.0.0) - Production-ready

License Version Build Status

Table of Contents

Quick Start

Get running in 5 minutes:

git clone https://github.com/sekacorn/WaterAccessOptimizer.git
cd WaterAccessOptimizer
cp .env.example .env
# Edit .env with your configuration
docker-compose -f docker-compose.prod.yml up -d
# Wait 2-3 minutes for services to start
# Open http://localhost (frontend)
# API Gateway: http://localhost:8080

For detailed setup instructions, see:

Who Should Use This

WaterAccessOptimizer is designed for:

  • NGOs & Humanitarian Organizations: Plan water access projects with risk assessments and data visualization
  • Government Agencies: Prioritize infrastructure investments using integrated water data
  • Research Institutions: Analyze water access patterns and infrastructure needs
  • Water Sector Consultants: Provide data-driven recommendations to clients

What This Platform Does

  • Data Integration: Upload and validate water quality, community, and infrastructure data (CSV, JSON, GeoJSON)
  • Risk Assessment: Evaluate water access risks at community level with actionable recommendations
  • Interactive Mapping: Visualize water infrastructure and access points on interactive maps
  • Collaboration: Real-time collaborative planning sessions for teams
  • Reporting: Export assessments and visualizations for stakeholder presentations

What This Platform Doesn't Do (Yet)

  • Real-time IoT sensor integration
  • Mobile apps (web-only for now)
  • Offline functionality
  • Advanced machine learning predictions
  • Multi-language support beyond English

Key Features (MVP v1.0.0)

1. User Management & Authentication

  • User Roles: USER (default), ADMIN
  • Secure Authentication: JWT-based authentication (24-hour tokens)
  • Password Security: bcrypt hashing, password strength requirements
  • Account Protection: Account lockout after 5 failed login attempts (30-minute cooldown)
  • Audit Logging: All login attempts, role changes, and admin actions logged
  • Enterprise features (SSO, MFA, multi-org) planned for V2

2. Data Upload & Management

  • Manual upload of CSV and GeoJSON files (max 10MB per file)
  • Three data types: Hydrological, Community, Infrastructure
  • Data validation with detailed error reporting
  • Per-user storage quota (100MB default)
  • Data provenance tracking (source, timestamp, checksum, user)
  • Automated connectors for USGS, OpenStreetMap planned for V1

3. Interactive Maps

  • 2D maps using Leaflet.js with point markers, heatmaps, and layer toggles
  • Communities color-coded by risk level (green/yellow/red)
  • Click markers for detailed information and risk breakdown
  • Export maps as PNG
  • 3D terrain visualization with Three.js planned for V1

4. Risk Assessment Engine

  • Rule-based risk scoring using WHO water quality guidelines
  • Risk levels: LOW (0-33), MEDIUM (34-66), HIGH (67-100)
  • Explainable results with top contributing factors
  • Factors: water quality, access distance, infrastructure capacity, population pressure
  • Actionable recommendations with priority levels
  • Data provenance tracking (which datasets used, when calculated)
  • ML-based predictions (Prophet/PyTorch) planned for V1

5. Reporting & Export

  • Export risk assessment results as CSV
  • Dashboard with summary statistics (high/medium/low risk counts, population affected)
  • Charts showing risk distribution
  • PDF report generation planned for V1

6. Administration

  • Admin dashboard for user management
  • View all users, deactivate accounts
  • System statistics (total uploads, storage used, assessments run)
  • Content moderation features added as needed

7. Monitoring & Observability

  • Prometheus Metrics: Request rates, latency, error rates, resource usage
  • Grafana Dashboards: Pre-configured dashboards for system monitoring
  • Structured Logging: JSON logs with request correlation
  • Health Checks: Liveness and readiness probes for all services
  • Alerting: Configurable alert rules for critical issues

Tech Stack

Layer Technology Purpose
Frontend React 18.2, Vite 5.0 Single-page application
State Management Zustand 4.4 Lightweight state management
Mapping Leaflet 1.9, React Leaflet 4.2 Interactive 2D maps
Charts Chart.js 4.4, React-Chartjs-2 5.2 Data visualization
HTTP Client Axios 1.6 API communication
Backend Java 17, Spring Boot 3.2+ Microservices architecture
API Gateway Spring Cloud Gateway Request routing, JWT validation
Database PostgreSQL 15 Relational data storage
Authentication JWT, Spring Security Secure authentication
Infrastructure Docker, Docker Compose Containerization
Orchestration Kubernetes 1.25+ Production orchestration
Web Server nginx (alpine) Frontend serving, reverse proxy
Monitoring Prometheus, Grafana Metrics collection and visualization
CI/CD GitHub Actions Automated build, test, deploy
Testing Vitest, Playwright, JUnit 5 Unit, integration, E2E tests

Image Details:

  • Frontend: nginx:alpine (~10MB)
  • Backend: eclipse-temurin:17-jre-alpine (~200MB)
  • Database: postgres:15-alpine (~24MB)

Architecture (MVP)

Microservices

┌─────────────────────────────────────────────┐
│         Frontend (nginx - Port 80)          │
│        - React 18.2 SPA                     │
│        - Gzip compression                   │
│        - Static asset caching               │
└─────────────────┬───────────────────────────┘
                  │
         ┌────────┴─────────┐
         │                  │
    ┌────▼─────────┐  ┌─────▼────────┐
    │ Auth Service │  │ Data Service │
    │  (Spring)    │  │  (Spring)    │
    │  Port: 8081  │  │  Port: 8087  │
    └────┬─────────┘  └─────┬────────┘
         │                  │
         └──────────┬───────┘
                    │
            ┌───────▼────────┐
            │   PostgreSQL   │
            │   Port: 5432   │
            └────────────────┘

3 Core Services:

  1. Frontend (nginx + React)

    • React 18.2 single-page application
    • Lazy loading and code splitting (7 vendor chunks)
    • 62% bundle size reduction (800KB → 300KB)
    • nginx with gzip compression and caching
    • Responsive design with dark/light theme
  2. Auth Service (Spring Boot)

    • User registration and login
    • JWT token generation and validation
    • Password hashing with bcrypt
    • Role-based access control (USER, ADMIN)
    • Audit logging
    • Spring Actuator health checks
  3. Data Service (Spring Boot)

    • Data upload and validation (CSV, JSON, GeoJSON)
    • Risk assessment calculations
    • Data storage and retrieval
    • RESTful API endpoints
    • Spring Actuator health checks

Monitoring Stack (Optional):

  • Prometheus (Port 9090) - Metrics collection
  • Grafana (Port 3000) - Dashboards and visualization

Directory Structure

WaterAccessOptimizer/
├── backend/
│   ├── auth-service/          # Authentication & user management
│   └── api-gateway/           # Data service (misnamed, functions as data-service)
├── frontend/                  # React 18.2 application
│   ├── src/
│   │   ├── components/        # Reusable React components
│   │   ├── pages/             # Page components (8 pages)
│   │   ├── store/             # Zustand state management
│   │   └── utils/             # Utility functions
│   ├── nginx.conf             # nginx configuration
│   └── Dockerfile             # Multi-stage build
├── k8s/                       # Kubernetes manifests
│   ├── namespace.yaml
│   ├── configmap.yaml
│   ├── secret.yaml
│   ├── *-deployment.yaml      # Service deployments
│   ├── ingress.yaml
│   └── hpa.yaml               # Horizontal Pod Autoscaler
├── infra/
│   ├── prometheus/            # Prometheus configuration
│   └── grafana/               # Grafana dashboards
├── tests/                     # E2E and integration tests
├── docs/                      # Comprehensive documentation
├── docker-compose.prod.yml    # Production Docker Compose
├── .github/workflows/         # CI/CD pipeline
└── DEPLOYMENT.md              # Complete deployment guide

Getting Started

Prerequisites

  • Docker Desktop 4.20+ (download)
  • Git 2.30+ (download)
  • 8GB RAM minimum (16GB recommended)
  • 20GB free disk space

Quick Installation (Docker)

# Clone repository
git clone https://github.com/sekacorn/WaterAccessOptimizer.git
cd WaterAccessOptimizer

# Configure environment
cp .env.example .env
# Edit .env with your values (database password, JWT secret, etc.)

# Start all services
docker-compose -f docker-compose.prod.yml up -d

# Wait for services to be healthy (2-3 minutes)
docker-compose -f docker-compose.prod.yml ps

# Access the application
open http://localhost           # Frontend
open http://localhost:8081      # Auth Service
open http://localhost:8087      # Data Service

What Gets Started

Local Development Setup

For local development without Docker:

# Backend (Auth Service)
cd backend/auth-service
mvn clean install
mvn spring-boot:run

# Backend (Data Service)
cd backend/api-gateway
mvn clean install
mvn spring-boot:run

# Frontend
cd frontend
npm install
npm run dev  # Runs on http://localhost:5173

Kubernetes Deployment

For production deployment on Kubernetes:

# Apply all manifests
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/configmap.yaml
kubectl apply -f k8s/secret.yaml
kubectl apply -f k8s/postgres-pvc.yaml
kubectl apply -f k8s/postgres-deployment.yaml
kubectl apply -f k8s/auth-service-deployment.yaml
kubectl apply -f k8s/data-service-deployment.yaml
kubectl apply -f k8s/frontend-deployment.yaml
kubectl apply -f k8s/ingress.yaml
kubectl apply -f k8s/hpa.yaml

# Verify deployment
kubectl get pods -n water-optimizer

Complete Setup & Deployment Guides

For detailed instructions, see:

  • GETTING_STARTED.md - Local development setup
  • DEPLOYMENT.md - Complete deployment guide covering:
    • Docker Compose deployment
    • Kubernetes production deployment
    • CI/CD pipeline setup
    • Monitoring & observability
    • Troubleshooting
    • Backup & restore
    • Security best practices
    • Scaling recommendations

User Roles (MVP)

Two Roles Only

USER (Default)

  • Upload and manage own water data (CSV/GeoJSON)
  • Run risk assessments on uploaded data
  • View interactive maps
  • Export results as CSV
  • 100MB storage quota

ADMIN

  • All USER permissions
  • View all users and system statistics
  • Deactivate user accounts
  • Access audit logs (login attempts, admin actions)

Additional roles (MODERATOR, ENTERPRISE_ADMIN, SUPER_ADMIN) planned for V2

Default Admin Account

For initial setup, a default admin account is created:

Email Password Role
admin@wateroptimizer.org admin123 ADMIN

IMPORTANT: Change this password immediately after first login.

Usage

User Registration and Login

  1. Register New Account

    POST /api/auth/register
    {
      "username": "john_doe",
      "email": "john@example.com",
      "password": "securePassword123",
      "firstName": "John",
      "lastName": "Doe",
      "organization": "Water NGO"
    }
  2. Login

    POST /api/auth/login
    {
      "username": "john_doe",
      "password": "securePassword123"
    }

    Returns:

    {
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
      "user": {
        "id": "uuid",
        "username": "john_doe",
        "email": "john@example.com",
        "role": "USER",
        "organization": "Water NGO"
      }
    }
  3. Use Token for Authenticated Requests

    Authorization: Bearer <your-jwt-token>

Uploading Water Data

  1. Navigate to the Analyze page
  2. Upload your data files:
    • Hydrological Data: Water quality, aquifer levels (CSV, JSON, GeoJSON)
    • Community Data: Population, access points (CSV, JSON, GeoJSON)
    • Infrastructure Data: Treatment plants, pipelines (CSV, JSON, GeoJSON)

CSV File Format Examples

Hydrological Data (hydro_data.csv):

source,data_type,location_name,latitude,longitude,measurement_value,measurement_unit,measurement_date
USGS,water_quality,River Site 1,34.05,-118.25,75.5,ppm,2024-01-01T12:00:00
WHO,aquifer_level,Well A,34.06,-118.26,120.0,meters,2024-01-02T12:00:00

Community Data (community_data.csv):

community_name,latitude,longitude,population,water_access_level,source
Village A,34.05,-118.25,5000,limited,OpenStreetMap
Village B,34.06,-118.26,3000,basic,Local Survey

Infrastructure Data (infrastructure_data.csv):

facility_type,facility_name,latitude,longitude,capacity,capacity_unit,operational_status
treatment_plant,Plant A,34.05,-118.25,10000,liters_per_day,operational
reservoir,Reservoir B,34.06,-118.26,50000,liters,operational

Getting Risk Assessments

  1. After uploading data, click Run Risk Assessment
  2. View:
    • Composite risk score (0-100)
    • Risk level classification (HIGH/MEDIUM/LOW)
    • Factor-based analysis (water quality, infrastructure, population, access, environment)
    • Actionable recommendations with priority levels

Exploring Interactive Maps

  1. Navigate to the Explore page
  2. View communities and infrastructure on 2D map
  3. Toggle layers (communities, infrastructure, heatmaps)
  4. Click markers for detailed information and risk breakdown
  5. Export maps as PNG 3D terrain visualization planned for V1

Admin Operations (MVP)

User Management (ADMIN only)

View All Users

GET /api/admin/users
Authorization: Bearer <admin-token>

Create User

POST /api/admin/users
Authorization: Bearer <admin-token>

{
  "username": "new_user",
  "email": "user@example.com",
  "password": "password123",
  "role": "USER",
  "organization": "NGO Example"
}

Deactivate User

POST /api/admin/users/{userId}/deactivate
Authorization: Bearer <admin-token>

View System Statistics

GET /api/admin/stats
Authorization: Bearer <admin-token>

Enterprise management and moderation features planned for V2

API Documentation

Authentication API

Register

POST /api/auth/register
Content-Type: application/json

{
  "username": "string",
  "email": "string",
  "password": "string",
  "firstName": "string",
  "lastName": "string",
  "organization": "string"
}

Login

POST /api/auth/login
Content-Type: application/json

{
  "username": "string",
  "password": "string"
}

Get Current User

GET /api/auth/me
Authorization: Bearer <token>

Change Password

POST /api/auth/change-password
Authorization: Bearer <token>
Content-Type: application/json

{
  "currentPassword": "string",
  "newPassword": "string"
}

Data Upload API

Upload Hydrological Data

POST /api/data/upload/hydro
Content-Type: multipart/form-data
Authorization: Bearer <token>

file: <CSV/JSON/GeoJSON file>

Get Uploaded Datasets

GET /api/data/datasets?page=1&limit=20
Authorization: Bearer <token>

Risk Assessment API

Run Risk Assessment

POST /api/risk-assessment/assess
Content-Type: application/json

{
  "communityId": "uuid",
  "includeRecommendations": true
}

Response:

{
  "compositeScore": 87.3,
  "riskLevel": "HIGH",
  "factorScores": {
    "waterQuality": 32.5,
    "infrastructure": 18.2,
    "population": 15.0,
    "access": 12.1,
    "environment": 9.5
  },
  "recommendations": [
    {
      "priority": "HIGH",
      "action": "Install water treatment system",
      "rationale": "Current water quality exceeds safe limits"
    }
  ]
}

LLM natural language query API planned for V1

For complete API reference, see docs/SERVICE_CONTRACTS.md

Monitoring & Observability

WaterAccessOptimizer includes comprehensive monitoring and observability features:

Metrics Collection

  • Prometheus: Collects metrics from all microservices
  • Custom Metrics: Authentication events, data uploads, risk assessments
  • JVM Metrics: Memory, GC, thread pools
  • Database Metrics: Connection pool, query performance

Visualization

  • Grafana Dashboards: Pre-configured dashboards for:
    • Service health and uptime
    • Request rates and latency (P50, P95, P99)
    • Error rates by service
    • Database and Redis performance
    • JVM memory usage
    • Authentication operations

Logging

  • Structured JSON Logging: All logs in JSON format for easy parsing
  • Request Correlation: X-Request-ID header for tracing requests across services
  • Log Levels: Configurable per service (DEBUG, INFO, WARN, ERROR)

Health Checks

  • Liveness Probes: Detect if service is running
  • Readiness Probes: Detect if service is ready to accept traffic
  • Custom Health Indicators: Database connectivity, Redis connectivity

Alerting

  • 12 Pre-configured Alert Rules:
    • Service down
    • High error rate (>5%)
    • Slow API response (P95 >2s)
    • Database connection issues
    • High memory usage (>90%)
    • Authentication failures

Access Monitoring

# Start with monitoring profile
docker-compose --profile monitoring up -d

# Access dashboards
open http://localhost:9090  # Prometheus
open http://localhost:3001  # Grafana (admin/admin)

For complete monitoring setup, see docs/OPS_RUNBOOK.md

Deployment

Three Deployment Methods

1. Docker Compose (Recommended for Testing)

# Production deployment
docker-compose -f docker-compose.prod.yml up -d

# Development with hot-reload
docker-compose -f docker-compose.dev.yml up -d

# View logs
docker-compose -f docker-compose.prod.yml logs -f

# Stop services
docker-compose -f docker-compose.prod.yml down

2. Kubernetes (Recommended for Production)

Prerequisites:

  • Kubernetes cluster 1.25+
  • kubectl configured
  • 4GB RAM minimum for cluster

Quick Deployment:

# Deploy all resources
kubectl apply -f k8s/

# Check deployment status
kubectl get pods -n water-optimizer
kubectl get svc -n water-optimizer

# Access via port-forward (testing)
kubectl port-forward svc/frontend 8080:80 -n water-optimizer

# Scale services
kubectl scale deployment/auth-service --replicas=5 -n water-optimizer

Features:

  • Auto-scaling (HPA) with 2-10 replicas
  • High availability with multiple replicas
  • Zero-downtime rolling updates
  • Resource limits and requests
  • Health checks (liveness + readiness)

3. Local Development

# Backend services
cd backend/auth-service && mvn spring-boot:run
cd backend/api-gateway && mvn spring-boot:run

# Frontend
cd frontend && npm run dev

CI/CD Pipeline

Automated deployment via GitHub Actions:

  • Builds on push to master/main
  • Runs tests (unit, integration, E2E)
  • Builds Docker images
  • Pushes to GitHub Container Registry
  • Deploys to Kubernetes
  • Total pipeline time: 35-60 minutes

Setup: Add KUBE_CONFIG secret to GitHub repository settings.

Complete Deployment Guide

For comprehensive deployment instructions, see:

  • DEPLOYMENT.md - 681-line complete guide covering:
    • Prerequisites for all environments
    • Step-by-step deployment for Docker, Kubernetes, and local
    • CI/CD pipeline configuration
    • Monitoring setup (Prometheus + Grafana)
    • 5 common issues with troubleshooting solutions
    • Backup and restore procedures
    • Security best practices
    • Scaling recommendations (small/medium/large deployments)

Testing

Test Coverage Targets

  • Unit Tests: 80% code coverage
  • Integration Tests: All API endpoints
  • E2E Tests: Critical user flows
  • Security Tests: Authentication, authorization, injection prevention
  • Performance Tests: Load testing with k6

Running Tests

# Backend unit tests
cd backend/auth-service
mvn test

# Backend integration tests
mvn verify -Pintegration-tests

# Frontend unit tests
cd frontend
npm run test:unit

# Frontend E2E tests
npm run test:e2e

# Performance tests
k6 run tests/performance/load-test.js

# Security scan
mvn org.owasp:dependency-check-maven:check

CI/CD Pipeline

Every pull request runs through 9 quality gates:

  1. [X]Code Quality (SonarQube)
  2. [X]Unit Tests (≥80% coverage)
  3. [X]Integration Tests
  4. [X]Security Tests (OWASP ZAP)
  5. [X]Frontend Tests
  6. Performance Tests (non-blocking)
  7. [X]Build (Docker images)
  8. [X]Deploy Staging + Smoke Tests
  9. [X]Deploy Production (manual approval)

For complete testing strategy, see:

File Formats

Supported Formats

  • CSV: Comma-separated values with headers
  • JSON: Standard JSON format
  • GeoJSON: Geographic data for mapping

Data Validation

  • Automatic format detection
  • Data integrity checks
  • Error reporting with troubleshooting hints

Troubleshooting

Common Issues

File Upload Fails

  • Ensure file is in CSV, JSON, or GeoJSON format
  • Check file size (max 100MB)
  • Verify required columns are present

Visualizations Not Loading

  • Upload data first on the Analyze page
  • Check browser console for errors
  • Clear cache and reload

AI Predictions Unavailable

Docker Services Won't Start

  • Check Docker is running
  • Verify ports 3000, 8080, 5432, 6379 are available
  • Review logs: docker-compose logs <service-name>

Getting Help

For troubleshooting assistance:

  1. Check GETTING_STARTED.md for common setup issues
  2. Check docs/OPS_RUNBOOK.md for operational issues
  3. Search GitHub Issues
  4. Create a new issue with logs and error messages

Security and Compliance

Data Protection

  • TLS encryption for data in transit
  • AES-256 encryption for data at rest
  • Input validation and sanitization
  • Rate limiting on API endpoints

Authentication

  • JWT-based authentication
  • OAuth2 support for external APIs
  • Role-based access control

Privacy

  • No sensitive data logged
  • GDPR compliance considerations
  • User data isolation

Copyright and Licensing

WaterAccessOptimizer is an original open-source work using:

  • Apache 2.0 and MIT licensed libraries
  • No proprietary code from QGIS, UNICEF WASH systems, or other tools
  • Compatible with open data formats (CSV, JSON, GeoJSON)

License: MIT License

Disclaimer: This software is provided for humanitarian purposes to improve water access worldwide. Use of this software must comply with all applicable laws and regulations.

Contributing

We welcome contributions! Please see our contributing guidelines.

Development Setup

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Write tests (aim for >90% coverage)
  5. Submit a pull request

Code Quality Standards

  • ESLint for JavaScript/React
  • Checkstyle for Java
  • Flake8 for Python
  • OWASP security scans

Roadmap

v1.0.0 (Current - MVP Complete)

  • User authentication and authorization (USER, ADMIN roles)
  • JWT-based secure authentication
  • Data upload and validation (CSV, JSON, GeoJSON)
  • Risk assessment engine with explanations
  • Interactive 2D mapping with Leaflet.js
  • Dashboard with analytics
  • Data collection and management
  • Reports and analytics
  • Responsive design with dark/light theme
  • Docker containerization (multi-stage builds)
  • Kubernetes production deployment
  • Horizontal Pod Autoscaling (2-10 replicas)
  • CI/CD pipeline (GitHub Actions)
  • Monitoring and observability (Prometheus/Grafana)
  • Code quality optimization (62% bundle reduction)
  • Lazy loading and code splitting
  • E2E testing (Playwright)
  • Unit and integration tests
  • Comprehensive documentation (3,500+ lines)

Development Stats:

  • 32 iterations completed
  • 3 deployment methods (local, Docker, Kubernetes)
  • Production-ready with auto-scaling
  • Zero-downtime deployments

v1.1 (Phase 2 - Planned)

  • ML-based predictions: Water availability forecasting
  • External data connectors: Automated import from USGS, OpenStreetMap
  • 3D visualization: Three.js terrain maps with water table depth
  • Real-time collaboration: WebSocket-based shared workspaces
  • PDF report generation: Professional reports for stakeholders
  • Email notifications: Alerts for high-risk assessments
  • Advanced analytics: Time-series analysis, clustering
  • Database clustering: Read replicas and high availability
  • Service mesh: Istio for advanced traffic management

v2.0 (Phase 3 - Planned)

  • Enterprise features: SSO/SAML, MFA, multi-organization support
  • Mobile app: React Native app with offline sync
  • Multi-language support: French, Spanish, Swahili, Arabic
  • Advanced GIS: Custom basemaps, WMS/WFS support
  • LLM integration: Natural language queries about data
  • GraphQL API: In addition to REST
  • Multi-region deployment: Geo-replication
  • Advanced RBAC: Fine-grained permissions
  • Distributed tracing: Jaeger/Zipkin integration
  • Centralized logging: ELK stack

Support

Having issues or questions?

  1. Documentation:

  2. Issues & Discussions:

  3. Contributing:

    • See CONTRIBUTING.md for contribution guidelines
    • Join our community discussions
    • Submit pull requests

Acknowledgments

  • WHO/UNICEF for water crisis data and statistics
  • USGS for hydrological data APIs
  • OpenStreetMap community for geographic data
  • Spring and React communities for excellent frameworks
  • All open-source contributors

License

This project is licensed under the MIT License - see the LICENSE file for details.

Disclaimer: This software is provided for humanitarian purposes to improve water access worldwide. Users are responsible for ensuring compliance with applicable laws and regulations.


Project Status

Version: 1.0.0 (MVP Complete) Status: Production-ready Iterations: 32 completed Documentation: 3,500+ lines Test Coverage: Unit, Integration, E2E Deployment Methods: Local, Docker, Kubernetes Auto-scaling: 2-10 replicas with HPA CI/CD: Fully automated pipeline Monitoring: Prometheus + Grafana


Built with care for improving water access worldwide

© 2024-2026 WaterAccessOptimizer Contributors - Open Source Project

About

WaterAccessOptimizer is an open-source platform designed to help NGOs, government agencies, and researchers make data-driven decisions about water access projects. It integrates hydrological data, community data, and infrastructure data to provide risk assessments, interactive visualizations, and data management tools.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages