Sahool is an enterprise-grade agricultural platform that combines satellite imagery, weather forecasting, AI-powered insights, and field management into a unified system. Built with modern microservices architecture, it provides farmers and agricultural organizations with data-driven tools for precision farming.
- 🛰️ Satellite Imagery Analysis: Automated Sentinel-2 data ingestion and NDVI calculation
- 🌤️ Weather Forecasting: Real-time weather data and forecasts from Open-Meteo
- 🤖 AI Field Assistant: Intelligent recommendations powered by AI
- 📊 Field Analytics: Health scoring, alerts, and timeline visualization
- 🗺️ Geographic Management: PostGIS-powered spatial data handling
- 🔐 Multi-tenant Architecture: Secure tenant and user management
- 📱 Modern Web Dashboard: Responsive Next.js interface
- 🐳 Cloud-Native: Docker and Kubernetes ready
- Docker & Docker Compose
- Python 3.11+
- Node.js 18+
- Git
# Clone the repository
git clone https://github.com/kafaat/sahool-project.git
cd sahool-project
# Copy environment template
cp .env.example .env
# Start all services
make up
# Or manually
docker-compose -f docker-compose.enterprise.yml up -d- Web Dashboard: http://localhost:3000
- API Gateway: http://localhost:9000
- API Documentation: http://localhost:9000/docs
- MinIO Console: http://localhost:9001
sahool-project/
├── multi-repo/ # Microservices
│ ├── gateway-edge/ # API Gateway
│ ├── geo-core/ # Geographic data service
│ ├── weather-core/ # Weather data service
│ ├── imagery-core/ # Satellite imagery service
│ ├── soil-core/ # Soil data service
│ ├── analytics-core/ # Analytics engine
│ ├── alerts-core/ # Alert management
│ ├── timeline-core/ # Timeline aggregation
│ ├── agent-ai/ # AI assistant
│ ├── ndvi-processor/ # NDVI calculation
│ ├── satellite-ingestor/ # Sentinel-2 ingestion
│ ├── weather-ingestor/ # Weather data ingestion
│ └── platform-core/ # User/tenant management
├── web/ # Next.js frontend
├── tests/ # Integration tests
├── helm/ # Kubernetes deployment
├── scripts/ # Utility scripts
└── docs/ # Documentation
Sahool follows a microservices architecture with the following layers:
- Frontend Layer: Next.js web application
- Gateway Layer: API gateway with routing, caching, and rate limiting
- Core Services: Domain-specific microservices (geo, weather, imagery, etc.)
- Processing Services: Data ingestion and processing pipelines
- Data Layer: PostgreSQL + PostGIS, Redis, MinIO
See ARCHITECTURE_v15.md for detailed architecture documentation.
# Start infrastructure only (DB, Redis, MinIO)
make dev
# Run a specific service
cd multi-repo/geo-core/multi-repo/geo-core
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8001# Run all tests
make test
# Run specific service tests
cd multi-repo/geo-core/multi-repo/geo-core
pytest -v# Format code
make format
# Run linters
make lintSee DEVELOPMENT.md for detailed development guide.
- Development Guide - Setup and development workflow
- Enterprise Deployment - Production deployment guide
- Architecture - System architecture
- Contributing - Contribution guidelines
- API Documentation - Interactive API docs (when running)
Key environment variables (see .env.example):
# Database
DATABASE_URL=postgresql+psycopg2://postgres:postgres@postgres:5432/sahool
# Satellite Data (Copernicus)
CDSE_USER=your_username
CDSE_PASS=your_password
# Object Storage
MINIO_ENDPOINT=http://minio:9000
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
# Cache
REDIS_URL=redis://redis:6379/0- Geo Service:
http://localhost:9000/api/geo/* - Weather Service:
http://localhost:9000/api/weather/* - Imagery Service:
http://localhost:9000/api/imagery/* - Analytics Service:
http://localhost:9000/api/analytics/* - Agent AI:
http://localhost:9000/api/agent/*
# Check all services
curl http://localhost:9000/health
# Check specific service
curl http://localhost:9000/api/geo/healthdocker-compose -f docker-compose.enterprise.yml up -dcd helm/sahool-platform
helm install sahool-platform . -n sahool --create-namespaceSee README_ENTERPRISE.md for production deployment details.
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Copernicus Data Space Ecosystem for Sentinel-2 data
- Open-Meteo for weather data
- FastAPI framework
- Next.js framework
Built with ❤️ for sustainable agriculture
Website • Documentation • Blog