derekc 4db9988406 Add multi-user authentication with JWT
- Users table with email/bcrypt-hashed password; register and login via /auth/ endpoints
- JWT tokens (30-day expiry) stored in localStorage; all API routes require Bearer auth
- All data (varieties, batches, settings, notification logs) scoped to the authenticated user
- Login/register screen overlays the app; sidebar shows user email and logout button
- Scheduler sends daily ntfy summaries for every configured user
- DB schema rewritten for multi-user; SECRET_KEY added to env

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 00:08:28 -07:00

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 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 plannedgerminatingseedlingpotted uphardening offgardenharvested
  • 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, topic, and authentication
  • 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

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 topic for push notifications — supports no auth, username/password, or API key/token
  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:

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
  • GET /api/notifications/log — recent notification history

Ntfy Authentication

For private ntfy servers or access-controlled topics, the Settings page supports three auth modes:

Mode When to use
None Public ntfy.sh topics
Username & Password ntfy server with basic auth enabled
API Key / Token ntfy account access token (generate in ntfy account settings)

Status

Core infrastructure is functional. UI design and feature set are evolving based on user feedback.

Description
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.
Readme 177 KiB
Languages
JavaScript 37.9%
Python 34.4%
CSS 16.3%
HTML 11.2%
Dockerfile 0.2%