Cashew
Cashew is a full-fledged, feature-rich application designed to empower users to manage their finances effectively. Built using Flutter – with Drift’s SQL package, and Firebase – this app offers a seamless and intuitive user experience across various devices. Development started in September 2021.
Release
Check out the official website!
This application is available on the App Store, Google Play, GitHub and as a Progressive Web App (PWA).
Changelog
Changes and progress in development are all heavily documented in GitHub commits and in the changelog
Key Features
💸 Budget Management
- Custom Budgets and Time Periods: Set up personalized budgets with flexible time periods, such as monthly, weekly, daily, or any custom time period that suits your financial planning needs. A custom time period is useful if you plan on setting a one-time travel budget!
- Added Budgets: Selectively add transactions to specific budgets, allowing you to focus on specific expense categories.
- Category Spending Limits per Budget: Set limits for each category within a budget, ensuring responsible spending.
- Past Budget History Viewing: Analyze your spending habits over time by accessing past budget history, enabling comparison and tracking of financial progress.
- Goals: Create spending and saving goals and put transactions towards different purchases or savings. Track your progress towards achieving your financial goals.
💰 Transaction Management
- Support for Different Transaction Types: Categorize transactions effectively based on types such as upcoming, subscription, repeating, debts (borrowed), and credit (lent). Each type behaves in certain ways in the interface. Pay your upcoming transactions when you’re ready, or mark your lent out transactions as collected.
- Custom Categories: Create personalized categories to organize transactions according to your unique spending habits. Search through multiple icons and select the default option as expenses or income when adding transactions.
- Custom Titles: Automatically assign transactions with the same name to specific categories, saving time and ensuring consistency. These titles are stored in memory and popup when you add another transaction with a similar name.
- Search and Filters: Easily search and filter transactions based on various criteria such as date, category, amount, or custom tags, enabling quick access to information.
- Easy Editing: Long-press and swipe to select multiple budgets, edit accordingly as needed or delete multiple at once.
💱 Financial Flexibility
- Multiple Currencies and Accounts: Manage finances across different currencies and accounts with up-to-date conversion rates for accurate calculations and effortless currency conversions. The interface shows the original amount added and the converted amount to the selected account.
- Switch Accounts and Currencies with Ease: On the homepage, easily select a different account and currency and everything will be converted automatically in an instant.
🔒 Enhanced Security and Accessibility
- Biometric Lock: Secure budget data using biometric authentication, adding an extra layer of privacy.
- Google Login: Conveniently log in to the app using your Google account, ensuring a streamlined and hassle-free authentication process.
🎨 User Experience and Design
- Material You Design: Enjoy a visually appealing and modern interface, following the principles of Material You design for a delightful user experience.
- Custom Accent Color: Personalize the app by selecting a custom accent color that suits your style, or follow that of the system.
- Light and Dark Mode: Seamlessly switch between light and dark themes to optimize visibility and reduce eye strain.
- Customizable Home Screen: Tailor the home screen layout and widgets to display the financial information that matters most to you, providing a personalized and efficient dashboard.
- Detailed Graph Visuals: Gain valuable insights into spending patterns through detailed and interactive graphs, visualizing financial data at a glance.
- Beautiful Adaptive UI: A responsive user interface that adapts flawlessly to both web and mobile platforms, providing an immersive and consistent user experience across devices.
☁ Backup and Syncing
- Cross-Device Sync: Keep budget data synchronized across all devices, ensuring access to financial information wherever you go.
- Google Drive Backup: Safeguard budget data by utilizing Google Drive’s backup functionality, allowing easy restoration of data if needed.
Discontinued: Budget Sharing (Alpha): Collaborate with family members, friends, or colleagues by sharing budgets, enabling collective tracking and management of shared expenses.
💿 Smart Automation
- Notifications: Stay informed about important financial events and receive timely reminders for budget goals, transactions, and upcoming due dates.
- Import CSV Files: Seamlessly import financial data by uploading CSV files, facilitating a smooth transition from other applications or platforms.
- Import Google Sheets: Seamlessly import Google Sheets tables, quickly importing many trasnactions from a spreadsheet.
Unsupported: Auto Email Transaction Parsing (Beta): Automatically parse transaction details from email receipts, making expense tracking effortless and efficient.
Bundled Packages
This repository contains, bundled in, modified versions of the discontinued packages listed below. They can be found in the folder /budget/packages
- https://pub.dev/packages/implicitly_animated_reorderable_list
- https://pub.dev/packages/sliding_sheet
Translations
The translations are available here: https://docs.google.com/spreadsheets/d/1QQqt28cmrby6JqxLm-oxUXCuM3alniLJ6IRhcPJDOtk/edit?usp=sharing. If you would like to help translate, please reach out on email: dapperappdeveloper@gmail.com
To Update Translations
- Run `budget\assets\translations\generate-translations.py“
- Restart the application
Developer Notes
Android Release
- To build an app-bundle Android release, run
flutter build appbundle --release
.
Note: required Android SDK.
iOS Release
- To build an IPA iOS release, run
flutter build ipa
.
Note: requires MacOS.
Firebase Deployment
- To deploy to firebase, run
firebase deploy
Note: required Firebase.
GitHub release
- Create a tag for the current version specified in
pubspec.yaml
git tag <version>
- Push the tag
git push origin <version>
- Create the release and upload binaries
- https://github.com/jameskokoska/Cashew/releases/new
Scripts
deploy_and_build_windows.bat
- Deploy to Firebase and build the apk and appbundle
open_release_builds.bat
- Opens the location of the built apk and appbundle
update_translations.bat
- Downloads the latest version of Cashew translations. Runs
budget\assets\translations\generate-translations.py
Develop Wirelessly on Android
adb tcpip 5555
adb connect <IP>
- Get the phone’s IP by going to
About Phone
>Status Information
>IP Address
Update Database Tables
- Run
dart run build_runner build
- Don’t forget to bump schema version
Get Platform
- Use
getPlatform()
fromfunctions.dart
- Since
Platform
is not supported on web, we must create a wrapper and always use this to determine the current platform
Push Route
- If we want to navigate to a new page, stick to
pushRoute(context, page)
function fromfunctions.dart
- It handles the platform routing and
PageRouteBuilder
Wallets vs. Accounts
Wallets
have been been renamed toAccounts
on the front-end but internally, the nameWallet
is still used.
Objectives vs. Goals
Objectives
have been been renamed toGoals
on the front-end but internally, the nameObjectives
is still used.
Download source code on GitHub
Provides the list of the opensource Flutter apps collection with GitHub repository.