v0.0.5 - Soft Launch — free & open

Keep track of your garden,
not spreadsheets.

GardenLog is a plant tracker built by a gardener, for gardeners. Log your plants, set reminders, plan your garden, and contribute to a community plant-observation database — all in one place.

GardenLog dashboard

Everything you need, nothing you don't

GardenLog focuses on the things that actually matter when you're growing plants at home.

🌱

Plant Tracking

Add plants with photos, species info, growing medium, and planting dates. See age, germination rate, and status at a glance.

📝

Activity Logs

Record sprouting, flowering, harvesting, pest issues, and more. Every log is timestamped, supports multiple photos, and captures environment conditions.

🔔

Smart Reminders

Set watering, hardening, and grow-light reminders per plant or zone. Get push notifications and complete, skip, or snooze from any device.

🌏

Garden Zones

Organise plants by location. Track shade levels, sun direction, and grow-light setup for each zone. Drag-and-drop plants between zones in the kanban view.

📅

Garden Planner

Plan sowing, repotting, flowering, and harvest events on a calendar. Link events to plants or zones and add notes.

🔎

Plant Search

Search an external plant database to auto-fill scientific names, care requirements, and growing information for your plants.

🌐

PlantDB Community

Opt in to share anonymised plant observations with PlantDB — a community database that helps gardeners learn from each other.

📱

Works on Any Device

Installable as a progressive web app with push notifications. Three view modes — kanban board, grid, or list — to suit how you work.

🎨

Themes & Languages

Light, dark, or system theme. Available in English and German with automatic language detection.

Your plants at a glance

Every plant gets its own card with status badges, age tracking, and quick access to logs. Tap in to see the full timeline, edit details, or add a new entry.

Plant cards view

A timeline of every milestone

From the day you plant a seed to the first harvest, every event is logged with photos and notes. Scroll back through your garden's history anytime.

Plant timeline view

Seed to garden, tracked every step

The propagation module gives you a visual grid for every tray. Track germination cell by cell, paint cells with seed brushes, mix your own growing medium, and graduate seedlings directly into your plant list when they're ready.

GardenLog propagation tray view

Your garden as a board

Switch to the kanban view to see every plant arranged by zone. Drag plants between zones, see status badges at a glance, and filter by group — the board remembers your last active layout.

GardenLog kanban board view

PlantDB — growing knowledge together

PlantDB is an external community plant-observation database. GardenLog users can opt in to share anonymised plant data and help build a public dataset of plant growth patterns.

Completely opt-in

During onboarding you're asked if you'd like to participate. You can change your mind any time in Settings — no pressure, no hidden defaults.

🕵

Anonymised data

Your user ID is never sent. Only plant names, species, log types, measurements, and growing conditions are shared — nothing that identifies you.

📈

Observations & sowings

Every log you record (sprouted, flowering, harvested, etc.) and every plant you create can become a data point that helps other gardeners understand what to expect.

💡

Contribution stats

See how many observations you've contributed on your dashboard — including a 7-day activity chart and milestone counters.

How it works

  1. You create or update a plant log in GardenLog as normal.
  2. If you've opted in, an anonymised copy of the observation is queued in the background.
  3. A background worker delivers queued events to the PlantDB API every 30 seconds.
  4. The data appears in PlantDB at db.gardenlog.au, available to the community.

A living dataset, built by gardeners

PlantDB collects anonymised observations from GardenLog users to build a public dataset of real plant growth patterns. Browse germination rates, growth timelines, and seasonal trends by species and climate profile.

Your contribution stats — observation count, a 7-day activity chart, and milestone counters — are visible right on your GardenLog dashboard.

PlantDB community dashboard

See your impact inside GardenLog

The Stats tab in GardenLog pulls live data from PlantDB so you can see how your observations compare against community benchmarks — germination rates, days to first flower, and more — without leaving the app.

PlantDB stats panel inside GardenLog

Why GardenLog exists — and how it's built

GardenLog started as a simple plant tracker and grew into something more complete — not by chasing features, but by following real needs. Every part of the app was built to solve a problem I actually had.

The propagation module came from losing track of which cells had germinated. The kanban board came from wanting to see my whole garden spatially. The PlantDB integration came from wanting observations to be useful beyond my own backyard.

The philosophy hasn't changed along the way. GardenLog will always be free, ad-free, and focused on gardening — nothing else. No engagement metrics, no premium tiers, no dark patterns.

Privacy by design

The minimum data needed, nothing more. PlantDB sharing is always opt-in. Your user identity is never included in what gets shared.

No bloat

Every feature solves a real gardening problem. If it doesn't help you grow plants better, it doesn't belong here.

Right tool, not fashionable tool

Vanilla CSS. React Context instead of a state library. PostgreSQL without an ORM. Simple, maintainable, and easy to reason about.

Community, not extraction

PlantDB exists to make gardening knowledge free and shared. Data flows in one direction: from gardeners, back to gardeners.

  • Free to use
  • No ads
  • No premium tier
  • Privacy-first
  • Hobby project
The head gardener supervising

How it's built

GardenLog is a full-stack project built and operated by one person. Here's the entire stack, end to end.

Frontend

React 19 + Vite

Single-page app with drag-and-drop kanban (dnd-kit), i18next localisation, and installable as a PWA with push notifications.

Backend

Node.js + Express 5

REST API with JWT auth, Joi validation, cron-based reminder scheduler, and a background outbox worker for PlantDB sync.

Database

PostgreSQL via Neon

Serverless Postgres. Seventeen tables covering users, plants, logs, zones, reminders, planner events, preferences, and the PlantDB outbox.

Hosting

Railway

Runs both the React frontend and Express backend. Handles deployments straight from the repository.

Source & CI

GitHub

Hosts the code repository, manages staging environments, and runs scheduled database backups.

Images

Cloudinary

CDN-hosted image storage with client-side compression. Photos are auto-optimised and served from the edge.

Simple app, simple data

GardenLog collects very little data. That's intentional.

What GardenLog stores

  • A username
  • An email address
  • A securely hashed password
  • Plant data and plant logs you choose to enter

That's it. Refreshingly rare.

What GardenLog does not do

  • Sell or share your data
  • Run ads
  • Track you across other sites
  • Collect analytics beyond basic server operation

PlantDB & your data

If you opt in to PlantDB, anonymised plant observations are shared with the community database. Your user ID is never included — only plant names, species, log types, measurements, and growing conditions are sent. You can toggle this on or off at any time in Settings, and any data already queued will still be delivered, but no new events will be created once you opt out.

GardenLog is a hobby project provided as-is. While I do my best to keep it reliable, it shouldn't be relied on as the sole source of care for your plants.