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 β¦