Tech Digest

Category

Tasks, recipes and money: which of these you will still be using in six months

Nothing in this category fails technically. It fails because the data goes stale, and stale data in a pantry tracker or a budget is worse than no data at all.

6 tools profiledMedian idle memory 220 MBLast reviewed

Sort them by the habit, not the feature list#

Nothing here fails technically. grocy is one PHP app over one SQLite file, idles under 50 MB, and has an ops load of 1. It is also the most abandoned tool in this category, and the reason has nothing to do with software.

Stock tracking is double-entry bookkeeping for food. Every purchase and every consumption has to be recorded, and grocy cannot know you ate something. The inbound half is a barcode scan; the outbound half is a chore. Miss a week and the pantry claims four tins of tomatoes when you have none, which is worse than no pantry at all, because now the shopping list lies to you too.

That is the real axis for the whole category. Rank by the daily commitment each tool extracts:

  • Mealie: paste a URL, get a filled-in recipe. Near-zero effort, immediate payoff.
  • Vikunja: add tasks, which you already do somewhere.
  • Actual Budget: reconcile weekly against statements.
  • Firefly III: learn double entry, then reconcile weekly.
  • grocy: record everything you consume, forever.

The other honest constraint is mobile. Self-hosted productivity is weak here and it is the deciding factor more often than any feature. Actual is the strongest because it is genuinely local-first: the budget lives on your device and the server only relays changes, so it works offline. Mealie is a PWA that needs the server reachable. Vikunja reaches phones over CalDAV at /dav, which its own docs still label early alpha, with DAVx5, OpenTasks and Tasks working, and Thunderbird and iOS CalDAV Sync listed as not working. Recurrence rules flow out to clients and never back in.

The default#

Mealie plus Actual Budget, because they have the best effort-to-payoff ratio and both survive contact with a household. Mealie is one container at about 300 MB, imports recipes from a URL and turns a week's plan into a shopping list. Actual is one container at about 120 MB with no database service, on port 5006.

Add Vikunja if you need shared task lists: one Go binary serving UI, /api/v1 and /dav on port 3456, under 100 MB with SQLite.

Two costs to accept up front. Mealie's install docs tell you to set an explicit memory: 1000M limit, because Python pre-allocates larger arenas on big hosts and the container then idles far above what it needs. And Actual's end-to-end encryption password cannot be reset, recovered or brute-forced; encryption is also one-way, and bank sync tokens for GoCardless or SimpleFIN sit on the server outside it.

Two cases where it is the wrong tool. You want a ledger, not a spending chart: Firefly III, with real double entry, multi-currency accounts and import rules, at four containers and a mandatory cron container. You want Trello's drag-and-drop feel for a team: PLANKA, after reading its licence and the 2.2.0 change.

The mistakes#

  • Restoring Actual without a sync reset. The server holds change history, so an older restored file syncs straight back to where you were. Restore, then reset sync from that device, then revert the others.
  • Letting an Actual budget file grow. Every mutation is stored, so the file grows even when transactions do not, until it hits the 20 MB ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB default and sync starts failing without a size warning.
  • Pointing Firefly III at PostgreSQL without changing DB_CONNECTION. It defaults to mysql, and startup fails on a connection error that names nothing useful. Behind a proxy you also need TRUSTED_PROXIES=** or you get http:// links inside an HTTPS site and login loops.
  • Upgrading Firefly III past 6.6.0 without replanning integrations. That release invalidated every OAuth token and client, so the data importer and any scripts need new tokens.
  • Upgrading grocy and not loading the root URL. Schema migrations run on a request to /, not at startup, so new code runs against an old schema and you get scattered SQL errors. 4.7.0 separately invalidated every session and reorganized AUTH_CLASS.
  • Leaving PLANKA's SECRET_KEY at notsecretkey. It is the published example value and it signs every access token. The shipped compose also sets POSTGRES_HOST_AUTH_METHOD=trust. If you are anywhere in 2.x below 2.2.1, upgrade first: 2.2.1 fixed a path traversal that let any authenticated user read arbitrary files.
  • Missing Vikunja's VIKUNJA_SERVICE_PUBLICURL. CORS has been on by default since 1.0, so a mismatch gives you a UI that loads and then fails every request.

Actual Budget vs Firefly III settles the money question, Vikunja vs PLANKA the task one. Replace Mint or YNAB and Replace Todoist are the migration paths with the export formats named. Then Backups that actually restore, because a SQLite file copied while the container runs is how most of these get lost.

Every productivity tool we profile#

Sorted by operational load, lightest commitment first. Every row links to a full profile with the resource numbers, the upgrade traps and the restore path.

ToolOps loadIdle RAMLicenceIdentityBackup shape
grocy1, Set and forget40 MBMITTrusted proxy headerSQLite backup
Actual Budget2, Light120 MBMITNative OIDCSQLite backup
Mealie2, Light300 MBAGPL-3.0-or-laterNative OIDCSQLite backup
Vikunja2, Light70 MBAGPL-3.0-or-laterNative OIDCSQLite backup
Firefly III3, Moderate250 MBAGPL-3.0-or-laterTrusted proxy headerMySQL dump
PLANKA3, Moderate220 MBPLANKA Community License (Fair Use License 1.1)Local accounts onlyPostgres dump

Profiles#

Head to head in this category#

Leaving a cloud service in this category#

Questions#

Which of these will I actually still be using in six months?

Sort by the habit each one demands. Mealie asks for a paste of a URL and gives back a filled-in recipe, so the effort is near zero and it survives. Vikunja asks you to add tasks, which most people already do somewhere. Actual Budget asks you to reconcile, which is weekly work with a visible payoff. Firefly III asks you to think in double entry. grocy asks you to record every item you consume, forever, which is why it has the highest install-to-abandon ratio here despite being the smallest and simplest thing in the category.

Actual Budget or Firefly III?

Actual if envelope budgeting is your mental model and you want the app to keep working when the server does not, because the budget lives on your device and the server only relays changes. Firefly III if you want a double-entry ledger that reconciles to the cent across many accounts and currencies. The cost of Actual is that its end-to-end encryption password cannot be reset, recovered or brute-forced, and encryption is one-way. The cost of Firefly III is operational: four containers in the usual shape, and recurring transactions only fire if you run its cron container.

Do these have decent mobile apps?

This is the weakest part of the category and worth checking before you commit. Actual Budget is the strongest, being local-first with real clients. grocy has Android and iOS companion apps for barcode scanning, which is the only way its workflow survives. Mealie is a PWA and needs the server reachable to do anything interesting, so no offline cooking on bad Wi-Fi. Vikunja reaches phones through CalDAV at /dav, which the docs still describe as early alpha: DAVx5, OpenTasks and Tasks work, Thunderbird and iOS CalDAV Sync are listed as not working.

Why do my Firefly III recurring transactions never appear?

Firefly III ships no scheduler. The official compose adds a small Alpine container whose crontab fetches http://app:8080/api/v1/cron/$STATIC_CRON_TOKEN at 03:00 daily, and that token must be exactly 32 characters or the endpoint refuses it. Without that container running, recurring transactions never materialize and bills are never marked paid or due, and nothing warns you. You find out weeks later when the numbers stop matching reality. Check it the same day you set up the importer, which is also a separate container talking over the API.

Is PLANKA still open source?

Not since 2.0. It was MIT, then AGPL-3.0 from 2023, and since the 2.0 release candidates in May 2025 the community edition ships under the PLANKA Community License, a Fair Use License derived from n8n's. Personal, hobby, educational and internal-organization use are permitted, free and indefinitely, so a homelab loses nothing. What it forbids is giving board access to people outside your own legal entity in a commercial relationship. The sharper problem is 2.2.0 in August 2026, which moved OIDC to Pro and deactivated every SSO-based account.

Why has grocy stopped matching what is in my cupboard?

Because stock tracking is double-entry bookkeeping for food and the outbound half is tedious. The barcode workflow is quick on the way in and slow on the way out, and grocy has no way to know you ate something. Skip consumption entries for a week and stock drifts high, then the due-soon warnings and minimum-stock shopping lists generate noise you learn to ignore, and then nobody opens it. The installs that survive share one pattern: scheduled shopping, bulk shelf-stable goods, and scanning with the phone app while unpacking rather than from a laptop later.

Published . Last reviewed . Found something out of date? Tell us and we will fix it and log the change.