DEV Community

Praire-Roots
Praire-Roots

Posted on

Free offline microgreens farm ledger for Windows: I replaced a spreadsheet with a local-first Tauri + Rust app

A spreadsheet let me overwrite a harvest cell. The total still looked fine. That tray was already promised.

I needed a free offline farm ledger for Windows: standing orders, trays by the ounce, and books that do not live in a $30/month cloud farm app. No account. No subscription. File stays on the PC.

That is Groundtruth 0.1.3. Apache-2.0. I run my own microgreens farm on it.

Repo: https://github.com/alexjvv52-ops/groundtruth-app

The job: standing order tracker + honest books

Small growers sow trays, harvest by weight, and sell to kitchens or a market. The failure mode is not seed. It is promising the same tray twice, then finding out when the sheet and the WhatsApp thread disagree.

Groundtruth is a local-first desktop app for that loop.

  • Today: move to light, harvest, sow the shortfall
  • Standing orders next to what is actually on the rack (promised vs sown)
  • Money in / money out — unpaid stays unpaid
  • Farm currency in Settings; bills and Payment Links use that currency
  • Export the database, event log, receipts, and CSVs and leave

Not a phone CRM. Not farmOS. Not QuickBooks.

Stack

  • React + Vite UI
  • Tauri commands into a Rust farm core
  • SQLite on disk
  • Append-only event log beside the database
  • %APPDATA%\com.prairieroots.groundtruth

Constraints that are code, not slogans

Unpaid stays unpaid. No silent mark-paid with no trail. Corrections and voids are new events.

Tray cost is computed when you look. Not a cached cell. Missing rows → it refuses to invent a number.

Health is not stored. A scan replays the event log against the database. Status is not a mood from yesterday.

Marketing cannot carry dollars. Samples and follow-ups stay money-free so a pipeline cannot pretend it is revenue.

One operator, one machine. No logins. Export everything. Stripe keys never ride along.

Restore checks a stamp. Bad bundles are rejected. Farms do not merge.

Those rules live in src-tauri (db.rs, events.rs, import.rs, export.rs) and docs/GT-D-SERIES.md.

Offline farm books, no subscription

Cloud farm software does real work: calendars, pack lists, a phone. It also keeps the ledger on a server you do not own and bills you whether the week sold.

This build is the opposite bet: Windows x64, unsigned installer, early 0.1.x, dead-laptop recovery documented and not magic. If you want the notebook gone tonight, do not.

Why this is on DEV

Local-first is easy to print on a landing page. It is harder when a cook is waiting on a tray count.

If you build desktop tools that have to survive a bad cell in a sheet, steal the event log + computed-health pattern. The microgreens skin is just the job I had.

Issues and PRs on the repo.

Top comments (0)