🌍 Live App: https://demetereye-web-1060536779509.us-central1.run.app/
🪐 Project presentation: canva.com
🚀 Developed as part of NASA's International Space Apps Challenge 2025 – a global hackathon empowering teams to solve real-world problems using NASA's open data and satellite imagery.
DemeterEye is an end-to-end field intelligence platform that combines NASA Harmonized Landsat Sentinel (HLS) imagery, agronomic models, and farmer-supplied data to surface vegetation trends, anomalies, and yield projections. This repository brings together the cloud-native API, the geospatial processing service, the map-driven web dashboard, and the iOS mobile application that make up the DemeterEye experience.
- Full-stack reference implementation for remote sensing-driven crop monitoring
- Chipnik Monitor service ingests HLS tiles, detects anomalies, and publishes daily/forecast time series
- Go REST API provides authenticated access to fields, reports, and operations backed by MongoDB
- React + Leaflet web app for drawing fields, reviewing NDVI/EVI histories, and requesting new analyses
- Native iOS app for mobile field monitoring with seasonal summaries and anomaly notifications
- Dockerfiles and GitHub Actions for deploying each component to Google Cloud Run
api/- Go 1.24 service that fronts MongoDB, wraps JWT auth, and brokers report generation requestschipnik_monitor/- Python 3.10+ analytics stack with FastAPI endpoints, Streamlit dashboard, and Prophet forecastingweb/- React client with Leaflet tooling for field management and report visualisationios/- Native iOS application for mobile field monitoring with seasonal tracking and notificationsmedia/- Shared branding assets referenced by documentation and the web client.github/workflows/- CI/CD pipelines for deploying the API, web client, and on-premise monitor images
- Python 3.10 or newer with GDAL/rasterio system libraries
- Go 1.24 toolchain
- Node.js 20+ and npm 10+
- MongoDB instance (local or cloud)
- NASA Earthdata credentials with access to HLS collections
- Google Cloud SDK (optional, for Cloud Run deployments)
- Xcode 26 (for iOS development)
- Set up shared infrastructure
- Start a MongoDB instance and note the connection string.
- Obtain an Earthdata bearer token and keep it handy for the monitor service.
- Run the Chipnik Monitor processor
The FastAPI docs become available at
cd chipnik_monitor python -m venv .venv # Windows: .venv\Scripts\Activate # macOS/Linux: source .venv/bin/activate pip install -r requirements.txt cp .env_example .env # fill EARTHDATA_BEARER_TOKEN, MONGO_URI, MONGO_DB, DAYS_BACK_LIMIT uvicorn api:app --reload --host 0.0.0.0 --port 8000
http://127.0.0.1:8000/docs. Optional: launch the Streamlit UI withstreamlit run chipnik_monitor.pyin a separate terminal for manual explorations. - Start the DemeterEye API
The API exposes Swagger docs at
cd api export MONGO_URI="mongodb://127.0.0.1:27017" export MONGO_DB="demetereye" export PROCESSOR_URL="http://127.0.0.1:8000" export JWT_SECRET="change_me" go run ./...
http://127.0.0.1:8080/swagger/index.html. - Launch the web client
Visit
cd web npm install VITE_API_BASE="http://127.0.0.1:8080" npm run dev
http://127.0.0.1:5173to draw fields, request reports, and visualise Chipnik outputs. - Build the iOS app (optional)
Configure the API endpoint in the app settings and build to a simulator or device through Xcode.
cd ios open DemeterEye.xcodeproj
| Key | Purpose |
|---|---|
EARTHDATA_BEARER_TOKEN |
Token used to fetch HLS imagery from NASA services |
MONGO_URI |
MongoDB connection string (shared with the API) |
MONGO_DB |
Database name for reports and job metadata |
DAYS_BACK_LIMIT |
Optional lookback window for historical imagery (defaults to 2000 days) |
| Key | Purpose |
|---|---|
MONGO_URI |
MongoDB connection string |
MONGO_DB |
Database name (must match the monitor service) |
PROCESSOR_URL |
Base URL of the Chipnik Monitor FastAPI service |
JWT_SECRET |
Symmetric secret for signing/verifying user tokens |
PORT |
HTTP port (defaults to 8080) |
| Key | Purpose |
|---|---|
VITE_API_BASE |
Base URL for the DemeterEye API (e.g. http://127.0.0.1:8080) |
deploy-chipnik-monitor.ymlanddeploy-chipnik-monitor-self-hosted.ymlpublish the monitor service to Cloud Run or self-hosted runners.deploy-chipnik-monitor.ymluses the on-premise Dockerfile inchipnik_monitor/on-premise/for GPU-friendly builds.- API and web subdirectories include reference
gcloud run deploycommands in their READMEs and Dockerfiles for container builds. build.ps1andbuild.shunderchipnik_monitor/on-premise/package air-gapped artifacts for environments without Cloud Run.
- Processor docs:
chipnik_monitor/README.md - API reference & OpenAPI spec:
api/openapi.yaml - Front-end notes and deployment snippet:
web/README.md - iOS app documentation:
ios/README.md
The mobile application helps farmers monitor field health using NASA Earth observation data:
- Login and management of multiple fields
- Map view with field boundaries
- Track field greenness and seasonal growth history
- Seasonal summaries with start, and peak of season dates
- Summaries and predictions for crop flowering
Contributions and feedback are welcome. Please open an issue or discussion if you plan to add new data sources, crop profiles, or deployment targets.
NASA • Space Apps Challenge • AgriTech • Remote Sensing • Climate Intelligence • AI for Agriculture • Geospatial • Sustainability




