LawnKeeper is a monorepo scaffold for lawn scouting, treatment tracking, seasonal planning, and soil analysis.
frontend/— Next.js 15 App Router, Tailwind, TypeScriptbackend/— FastAPI, SQLModel, Alembic, PostgreSQLdocker-compose.yml— local app + Postgres orchestration
docker compose up --buildThen open:
- Frontend: http://localhost:3000
- Backend docs: http://localhost:8000/docs
| Method | Endpoint | Purpose |
|---|---|---|
| POST | /api/scans |
Upload a lawn image and create a placeholder scan |
| GET | /api/scans |
List recent scans |
| GET | /api/scans/{id} |
Read a scan by id |
| GET | /api/treatments?scan_id=X |
View mock treatment recommendations |
| POST | /api/treatments/applications |
Log a treatment application |
| GET | /api/plans |
List seasonal plans |
| POST | /api/plans/regenerate |
Regenerate a maintenance plan |
| POST | /api/soil-tests |
Save a soil test |
| GET | /api/soil-tests |
List soil tests |
| GET | /api/weather?lat=X&lon=Y |
Proxy weather and soil forecast data from Open-Meteo |
| GET | /api/settings |
Read lawn profile settings |
| PUT | /api/settings |
Update lawn profile settings |
- The weather service makes real HTTP requests to Open-Meteo.
- All other backend services are scaffolded with placeholder/mock implementations.
- Frontend pages and components render static placeholder content and are ready for API integration.