Full-stack weather intelligence dashboard for Nyeri, Kenya farmers. Built with FastAPI + React + WeatherAI API.
# AgroWeather Nyeri 🌱
A full-stack weather intelligence dashboard built for Central Kenya farmers, powered by the WeatherAI API.
Built as a technical challenge submission demonstrating API integration, clean architecture, and local agricultural context.
---
## Features
- **Live Weather Dashboard** — real-time conditions for Nyeri, Kenya with temperature, humidity, wind speed, and feels-like
- **7-Day Forecast** — daily outlook with weather icons and min/max temperatures
- **AI Farming Advice** — Gemini-powered summaries with crop-specific recommendations
- **Tree Canopy Scanner** — upload aerial/drone farm images for AI-powered tree count, canopy coverage, and health analysis
- **Swahili Language Toggle** — full English/Swahili i18n support
- **Auto Location Detection** — IP-based geo lookup defaulting to Nyeri coordinates
---
## Tech Stack
**Backend**
- Python 3.12 + FastAPI
- httpx for async HTTP
- Pydantic v2 for data validation
- Uvicorn ASGI server
**Frontend**
- React 18 + TypeScript
- Vite
- Tailwind CSS v4
- i18next for internationalization
- Axios
**Infrastructure**
- Docker + docker-compose
- Nginx (frontend serving + API proxy)
- Backend deployable to Render/Railway
- Frontend deployable to Vercel
---
## Project Structure
```
agroweather/
├── backend/
│ ├── app/
│ │ ├── api/v1/endpoints/ # weather.py, trees.py
│ │ ├── core/ # config, logging, exceptions
│ │ ├── services/ # http_client, weather, trees
│ │ ├── schemas/ # pydantic response models
│ │ └── main.py
│ ├── Dockerfile
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── api/ # client, weather, trees
│ │ ├── components/ # TreeScanner
│ │ ├── i18n/ # English + Swahili translations
│ │ └── App.tsx
│ ├── Dockerfile
│ └── nginx.conf
└── docker-compose.yml
```
---
## Local Setup
### Prerequisites
- Python 3.12
- Node.js 20+
- Docker Desktop (optional)
- WeatherAI …