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.
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_MBdefault and sync starts failing without a size warning. - Pointing Firefly III at PostgreSQL without changing
DB_CONNECTION. It defaults tomysql, and startup fails on a connection error that names nothing useful. Behind a proxy you also needTRUSTED_PROXIES=**or you gethttp://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 reorganizedAUTH_CLASS. - Leaving PLANKA's
SECRET_KEYatnotsecretkey. It is the published example value and it signs every access token. The shipped compose also setsPOSTGRES_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.
Read next#
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.
| Tool | Ops load | Idle RAM | Licence | Identity | Backup shape |
|---|---|---|---|---|---|
| grocy | 1, Set and forget | 40 MB | MIT | Trusted proxy header | SQLite backup |
| Actual Budget | 2, Light | 120 MB | MIT | Native OIDC | SQLite backup |
| Mealie | 2, Light | 300 MB | AGPL-3.0-or-later | Native OIDC | SQLite backup |
| Vikunja | 2, Light | 70 MB | AGPL-3.0-or-later | Native OIDC | SQLite backup |
| Firefly III | 3, Moderate | 250 MB | AGPL-3.0-or-later | Trusted proxy header | MySQL dump |
| PLANKA | 3, Moderate | 220 MB | PLANKA Community License (Fair Use License 1.1) | Local accounts only | Postgres dump |
Profiles#
grocy
Household stock, chores and batteries in one PHP app on a single SQLite file
ops 2/5 · 120 MBActual Budget
Local-first envelope budgeting with an optional sync server you can encrypt end to end
ops 2/5 · 300 MBMealie
Recipe manager and meal planner that imports from URLs, photos and cooking videos
ops 2/5 · 70 MBVikunja
Task manager with list, kanban, gantt and CalDAV, shipped as one Go binary
ops 3/5 · 250 MBFirefly III
Double-entry personal finance for people who want a ledger, not a spending chart
ops 3/5 · 220 MBPLANKA
Trello-style kanban with live updates, now under a source-available Fair Use License
Head to head in this category#
- Actual Budget vs Firefly IIIEnvelope budgeting or double-entry accounting. Pick the mental model first, because the ops load follows it.
- Vikunja vs PLANKAA five-view task manager with CalDAV, against a realtime kanban board that is no longer open source.
Leaving a cloud service in this category#
- Replace Mint or YNABEnvelope budgeting and double-entry accounting are different products. Pick the wrong one and you quit within a month.
- Replace TodoistSelf-hosted task managers are weakest exactly where Todoist is strongest: on your phone.
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.