From 7c94060542e925067a9c910eed65e86d1400c543 Mon Sep 17 00:00:00 2001 From: derekc Date: Sun, 8 Mar 2026 23:29:37 -0700 Subject: [PATCH] Add README and .env.example --- .env.example | 3 ++ README.md | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 .env.example create mode 100644 README.md diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..fc3c994 --- /dev/null +++ b/.env.example @@ -0,0 +1,3 @@ +MYSQL_ROOT_PASSWORD=sproutly_root_secret +MYSQL_USER=sproutly +MYSQL_PASSWORD=sproutly_secret diff --git a/README.md b/README.md new file mode 100644 index 0000000..f2585bd --- /dev/null +++ b/README.md @@ -0,0 +1,103 @@ +# Sproutly 🌱 + +A self-hosted plant growth tracking web app designed to help home gardeners manage their seed starting schedules, growing cycles, and garden transitions — all anchored to their local last frost date. + +## Overview + +Sproutly takes the guesswork out of seed starting. Enter your plant varieties once with their frost-relative timing (e.g. "start 8 weeks before last frost"), set your last frost date, and Sproutly calculates exactly when to start seeds, move to the greenhouse, and transplant to the garden. A daily push notification via [ntfy](https://ntfy.sh) keeps you on track without having to check the app. + +## Features + +- **Dashboard** — at-a-glance view of overdue, today's, and upcoming tasks with a full year planting timeline +- **Seed Library** — manage plant varieties with frost-relative timing, germination days, sun/water requirements +- **Garden Tracker** — log growing batches and track status from `planned` → `germinating` → `seedling` → `potted up` → `hardening off` → `garden` → `harvested` +- **Year Timeline** — visual calendar showing when each variety's stages fall across the year +- **Ntfy Notifications** — daily summary push notifications to your phone, configurable time and topic +- **Settings** — set your last frost date, fall frost date, location, timezone, and notification preferences + +## Stack + +| Layer | Technology | +|-----------|-------------------------| +| Frontend | Nginx (static HTML/CSS/JS SPA) | +| Backend | FastAPI (Python) | +| Database | MySQL 8.0 | +| Notifications | Ntfy | +| Runtime | Docker Compose | + +## Getting Started + +### Prerequisites + +- Docker and Docker Compose + +### Run + +```bash +git clone https://git.chns.tech/CooperandGoodman/sproutly.git +cd sproutly +cp .env.example .env # edit credentials if desired +docker compose up --build -d +``` + +Access the app at **http://localhost:8053** + +### First Steps + +1. Go to **Settings** and enter your last frost date — this anchors all planting schedule calculations +2. Optionally configure an [ntfy](https://ntfy.sh) topic for push notifications +3. Browse the pre-loaded **Seed Library** (12 common vegetables, herbs, and flowers included) +4. Start logging batches in **My Garden** as you sow seeds + +## Environment Variables + +Copy `.env` and adjust as needed: + +```env +MYSQL_ROOT_PASSWORD=sproutly_root_secret +MYSQL_USER=sproutly +MYSQL_PASSWORD=sproutly_secret +``` + +## Project Structure + +``` +sproutly/ +├── docker-compose.yml +├── .env +├── mysql/ +│ └── init.sql # Schema + sample seed varieties +├── backend/ # FastAPI application +│ ├── main.py +│ ├── models.py +│ ├── schemas.py +│ ├── database.py +│ └── routers/ +│ ├── varieties.py +│ ├── batches.py +│ ├── dashboard.py +│ ├── settings.py +│ └── notifications.py +└── nginx/ + ├── nginx.conf + └── html/ # Static frontend SPA + ├── index.html + ├── css/style.css + └── js/app.js +``` + +## API + +The FastAPI backend is available at `/api/` and includes automatic docs at **http://localhost:8053/api/docs** + +Key endpoints: +- `GET /api/dashboard/` — dashboard data, tasks, and timeline +- `GET/POST/PUT/DELETE /api/varieties/` — seed variety management +- `GET/POST/PUT/DELETE /api/batches/` — growing batch management +- `GET/PUT /api/settings/` — app settings +- `POST /api/notifications/test` — send test ntfy notification +- `POST /api/notifications/daily` — trigger daily summary + +## Status + +This project is in early development. Core infrastructure and UI prototype are functional. UI design and feature set are evolving based on user feedback.