# πΎ Smart-Shamba: Local Analytics Lakehouse for Agricultural Decisions
A complete, local-first analytics lakehouse that provides data-driven crop planting recommendations for Ugandan smallholder farmers.
---
## π Project Overview
**Problem:** Farmers make planting decisions based on intuition, leading to losses from weather volatility and market fluctuations.
**Solution:** Smart-Shamba integrates weather, vegetation health (NDVI), and market price data to generate explainable, district-level crop recommendations.
**Tech Stack:** 100% free-tier tools running locally
- **Orchestration:** Mage.ai
- **Storage:** DuckDB
- **Transformation:** dbt Core
- **Visualization:** Streamlit
- **Language:** Python & SQL
---
## ποΈ Architecture
```
External APIs β Mage.ai β DuckDB (Raw) β dbt (Transform) β Streamlit
β
Business Logic
β
Crop Recommendations
```
### Data Flow (ELT Pattern)
1. **Extract & Load:** Mage pipelines pull data from APIs and load into DuckDB raw tables
2. **Transform:** dbt models clean data (staging) and apply business rules (marts)
3. **Analyze:** Streamlit dashboard visualizes recommendations
---
## π Project Structure
```
smart-shamba-lakehouse/
β
βββ requirements.txt # Python dependencies
βββ setup_project.py # Automated setup script
βββ .env.template # Environment variables template
β
βββ mage_load_weather.py # Weather data loader
βββ mage_load_prices.py # Price data loader
βββ mage_load_vegetation.py # Vegetation data loader
β
βββ warehouse/
β βββ duckdb/
β βββ agri_analytics.db # DuckDB database file
β
βββ dbt/
β βββ dbt_project.yml # dbt configuration
β βββ profiles.yml # Database connection config
β βββ dbt_sources.yml # Raw data sources
β β
β βββ models/
β βββ staging/
β β βββ dbt_stg_weather.sql # Clean weather data
β β βββ dbt_stg_prices.sql # Clean price data
β β βββ dbt_stg_vegetat β¦