Cashew: a Flutter budget tracker with local SQL and a Firebase sync layer
đź’¸ An app created to help users manage a budget and purchases
At a glance
- What is it?
- Cashew is a GPL-3.0 budgeting app for Android, iOS and the web, built in Flutter on Drift's SQL package and Firebase. It is aimed at people who want category-level budgets, multiple currencies and biometric lock, and it ships through the app stores, GitHub releases and a PWA.
- Who is it for?
- Cashew fits people who want a category-level budget with multiple currencies and a biometric lock, and who are comfortable installing a Flutter app from the App Store, Google Play, GitHub releases or the PWA at budget-track.web.app. It is a poor fit if you need bank feeds or automatic transaction import, because nothing in the README describes either.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Activity is slowing. The repository last received commits 6 months ago.
- What is it written in?
- Mainly Dart, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 27, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Cashew is for, and who it is not for
Cashew is a personal budgeting app. The README describes it as "a full-fledged, feature-rich application designed to empower users in managing their finances effectively," and the feature list is organised around three jobs: setting budgets over flexible time periods, recording and categorising transactions, and holding money in more than one currency or account. Development started in September 2021.
The audience is someone who tracks spending by hand and wants structure around it. Budgets can run monthly, weekly, daily or over a custom period, and the README gives a concrete example of why that matters: a one-time travel budget. Transactions can be assigned selectively to a budget, and each category inside a budget can carry its own spending limit. Past budgets stay viewable, so you can compare one period against another.
What is absent from the README is any mention of bank connections or automatic transaction import. Every transaction type listed (upcoming, subscription, repeating, debts borrowed, credit lent) is something the user records or schedules. If you want your bank statement to populate the app for you, Cashew is the wrong tool, and the README does not claim otherwise.
Flutter, Drift SQL and Firebase: how the pieces fit
The README names the stack directly: "Built using Flutter - with Drift's SQL package, and Firebase." Flutter is what makes the same codebase reach Android, iOS and a web app; the repository's primary language is Dart, and the app code sits in the budget/ directory at the top level, alongside promotional/, scripts/ and .github/.
Drift is a Dart SQL layer, so the local data model is a relational database rather than a document store. That choice shows up in the feature list, where budgets, categories, transactions and goals are all queried and filtered by date, category, amount or tag. Search and filters over that many axes are cheaper against SQL than against a flat file.
Firebase appears in the README in the context of Google login, described as a way to "log in to the app using your Google account." The README does not describe the sync protocol, conflict resolution or what happens to local rows when a Google account is attached, so treat cross-device behaviour as something to verify yourself rather than something the project documents. Biometric lock is listed as a separate privacy layer over budget data.
Installing Cashew and creating a first budget
There is no build-from-source walkthrough in the README. It points to four distribution channels instead: the App Store, Google Play, GitHub releases, and a PWA. The official website is cashewapp.web.app. The PWA lives at budget-track.web.app, and the Google Play package id is com.budget.tracker_app.
On a desktop or a machine without the stores, the fastest path is the web app, which needs no installation at all. Open the PWA URL in a browser and the app loads in the tab.
# PWA, no install step
https://budget-track.web.app/If you prefer a native binary, the GitHub releases page carries builds. The most recent release listed in the repository metadata is 5.3.4+396, dated 2024-07-01. Download the asset matching your platform from that page rather than building the Flutter project yourself, since the README does not document a build command.
# Releases page for native builds
https://github.com/jameskokoska/Cashew/releases/Once the app is open, the first real task is a budget. The README says budgets take a time period, and that monthly, weekly, daily and custom periods are all supported. Pick the period that matches how you actually get paid, then add categories with per-category limits. The README describes this as "Set limits for each category within a budget, ensuring responsible spending."
After that, add a transaction. When you type a title you have used before, the README states that the app stores these titles in memory and offers them again, and that transactions sharing a name can be assigned automatically to a category. That is the mechanism that keeps manual entry from becoming repetitive.
Where Cashew gets awkward
The release cadence is the first thing to look at. The three most recent releases in the repository metadata are 5.3.4+396 on 2024-07-01, 5.2.9+366 on 2024-05-01 and 5.2.8+347 on 2024-04-04. The repository itself was last pushed on 2026-03-09, so development has continued past the last tagged release. Anyone who installs a store build is likely running something older than main, and the README does not explain how the release tags relate to the branch.
The changelog is another gap. The README says changes are documented in GitHub commits and in a changelog file at budget/lib/widgets/showChangelog.dart. That file lives inside the app's widget tree rather than in a docs directory or a release note, which is an unusual place to keep a user-facing changelog. If you want to know what changed between two versions, you are reading Dart source.
Currency conversion depends on up-to-date rates, per the README, but the README does not say where those rates come from or how often they refresh. For a multi-currency user that is the difference between a useful balance and a wrong one. Test it with a known pair before trusting the totals.
Cashew compared with a plain spreadsheet
The honest alternative for a lot of people is a spreadsheet. A spreadsheet gives you arbitrary formulas, no app install, and a file you control completely. Cashew gives you a fixed schema: budgets, categories, transactions, goals, accounts, currencies. You cannot write an arbitrary formula across those tables, and the README does not describe a plugin or scripting surface.
What Cashew adds over the spreadsheet is the interface work. Long-press and swipe to select multiple budgets and edit or delete them in one action. Automatic category assignment for repeated transaction titles. Transaction types that behave differently in the UI, so an upcoming transaction can be paid when you are ready and a lent-out transaction can be marked as collected. A spreadsheet can model all of this, but you build it yourself.
The trade-off runs the other way too. Cashew's data lives in a Drift SQL database inside the app, and the README does not document a plain export format or a way to query that database from outside. A spreadsheet is a file you can open with anything. If portability of your raw data matters more than the interface, the spreadsheet wins, and Cashew's README gives you no reason to think otherwise.
Licence and the cost of staying current
Cashew is licensed GPL-3.0, and the LICENSE file sits at the top level of the repository. For an end user installing from a store, the licence mostly means the source is available and that anyone distributing a modified build has obligations under GPL-3.0. For someone who wants to fork the app or ship it inside another product, the copyleft terms are the thing to read in full. This is a description of the licence text, not legal advice.
Upgrade cost is where the project is least transparent. The README routes you to commits and to budget/lib/widgets/showChangelog.dart for changes, and the release tags lag the branch. There is no documented migration path for the local SQL database, and the README does not mention rollback. If you are running a build from GitHub releases, keep the previous asset around before replacing it, because the project does not tell you how to go back.
Editorial conclusion
Cashew fits people who want a category-level budget with multiple currencies and a biometric lock, and who are comfortable installing a Flutter app from the App Store, Google Play, GitHub releases or the PWA at budget-track.web.app. It is a poor fit if you need bank feeds or automatic transaction import, because nothing in the README describes either. Before adopting it, check the release page for a build newer than 5.3.4+396 from 2024-07-01, and read the changelog file in the repository to see what changed since.
Frequently asked questions
How do I set up the Cashew app?
Install it from the App Store, Google Play, the GitHub releases page, or open the PWA at budget-track.web.app. The README does not document a build-from-source procedure, so the store or release build is the intended path.
How do I use the Cashew app for budgeting?
Create a budget with a time period (monthly, weekly, daily or a custom period), set per-category spending limits inside it, then record transactions and assign them to that budget. The README also describes spending and saving goals that transactions can be put towards.
What is Cashew built with?
The README states the app is built with Flutter, Drift's SQL package and Firebase, and the repository's primary language is Dart. The app code lives in the budget/ directory.
Does Cashew connect to my bank?
The README does not describe bank connections or automatic transaction import. Every transaction type it lists (upcoming, subscription, repeating, debts, credit) is recorded or scheduled by the user.
Does Cashew support more than one currency?
Yes. The README describes managing finances across different currencies and accounts with conversion rates, and shows both the original amount and the converted amount on a transaction. The README does not say where the rates come from.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/jameskokoska-cashew)