Add last login tracking, batch date auto-fill, and bug fixes
- Track last_login_at on User model, updated on every successful login - Show last login date in admin panel user table - Fix admin/garden date display (datetime strings already contain T separator) - Fix My Garden Internal Server Error (MySQL does not support NULLS LAST syntax) - Fix Log Batch infinite loop when user has zero varieties - Auto-fill batch dates from today when creating a new batch, calculated from selected variety's week offsets (germination, greenhouse, garden) - Update README with new features and batch date auto-fill formula table Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
23
README.md
23
README.md
@@ -9,10 +9,11 @@ Sproutly takes the guesswork out of seed starting. Enter your plant varieties on
|
||||
## Features
|
||||
|
||||
- **Multi-user** — each user has their own account with fully isolated data
|
||||
- **Admin panel** — manage all user accounts: view content, reset passwords, disable, or delete
|
||||
- **Admin panel** — manage all user accounts: view content, reset passwords, disable, or delete; shows each user's join date and last login
|
||||
- **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`
|
||||
- **Smart date auto-fill** — when logging a new batch, sow date defaults to today and all subsequent dates (germination, greenhouse, transplant) are calculated automatically from the selected variety's timing
|
||||
- **Year Timeline** — visual calendar showing when each variety's stages fall across the year
|
||||
- **Ntfy Notifications** — per-user 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
|
||||
@@ -48,9 +49,10 @@ Access the app at **http://localhost:8053** — create an account to get started
|
||||
### First Steps
|
||||
|
||||
1. Register an account on the login screen
|
||||
2. Go to **Settings** and enter your last frost date — this anchors all planting schedule calculations
|
||||
2. Go to **Settings** and enter your last frost date — this anchors the planting timeline and dashboard calculations
|
||||
3. Optionally configure an [ntfy](https://ntfy.sh) topic for push notifications
|
||||
4. Add varieties to your **Seed Library** and start logging batches in **My Garden**
|
||||
4. Add varieties to your **Seed Library** — each variety stores its frost-relative week offsets and germination days
|
||||
5. Head to **My Garden** and log a batch — dates auto-fill based on today and the selected variety's timing
|
||||
|
||||
## Environment Variables
|
||||
|
||||
@@ -131,7 +133,7 @@ Key endpoints:
|
||||
|
||||
Log in with the `ADMIN_EMAIL` / `ADMIN_PASSWORD` credentials from your `.env`. Once logged in, an **Admin** link appears in the sidebar. From there you can:
|
||||
|
||||
- View all registered users with their variety and batch counts
|
||||
- View all registered users with join date, last login, variety count, and batch count
|
||||
- Browse any user's seed library and growing batches
|
||||
- Reset a user's password
|
||||
- Disable or re-enable an account
|
||||
@@ -149,6 +151,19 @@ For private ntfy servers or access-controlled topics, the Settings page supports
|
||||
| Username & Password | ntfy server with basic auth enabled |
|
||||
| API Key / Token | ntfy account access token (generate in ntfy account settings) |
|
||||
|
||||
## Batch Date Auto-fill
|
||||
|
||||
When logging a new batch, Sproutly pre-fills all date fields based on the selected variety's timing offsets, using **today as the sow date**:
|
||||
|
||||
| Field | Calculation |
|
||||
|-------|-------------|
|
||||
| Sow date | Today |
|
||||
| Germination date | Sow date + `days_to_germinate` |
|
||||
| Greenhouse / pot-up date | Sow date + (`weeks_to_start` − `weeks_to_greenhouse`) × 7 |
|
||||
| Garden transplant date | Sow date + (`weeks_to_start` + `weeks_to_garden`) × 7 |
|
||||
|
||||
All dates remain fully editable. Fields are left blank if the variety is missing the relevant timing value.
|
||||
|
||||
## Status
|
||||
|
||||
Core infrastructure is functional. UI design and feature set are evolving based on user feedback.
|
||||
|
||||
Reference in New Issue
Block a user