Angelfish is a local first personal finance app built for couples. This means your private financial data will never be stored in our Cloud, but only locally on your devices. A decentralised database is being developed to add later which will allow you to access your data securely across different devices and collaborate with other users you invite into your household with built in end-to-end encryption.
Angelfish supports the following features:
- Add all your cash/day-to-day Bank Accounts and their respective Transactions to get a single view of your spending (Investment/Loan Accounts will be added in future)
- Importing your Transaction data from your Bank's OFX, QFX, QIF or CSV exports
- Smart Reconciliation - NO RULES that quickly get complicated and out of date, the system learns how to automatically categorise your transactions over time
- Multi-Currency so you can track your Income and Expenses around the World
- Bank Account Owners so you can track your Income and Expenses by each person in your household
- Categories and Category Groups to track where your Income and Expenses are coming from and get detailed breakdowns
- Category types so you can organise your Income by Earned or Passive sources, and Expenses by Critical, Important or Optional to get more visibility into your Income and Expenses
- Detailed Monthly Income and Expense Reports to track your Income/Expenses over time with detailed breakdowns
- Ability to export your Reports to Excel for custom analysis
You can learn more about Angelfish's origin story and vision here.
You will need the following installed on your machine to setup your local machine for development:
- Node Version Manager: https://github.com/nvm-sh/nvm
- Yarn 4.6.0: https://yarnpkg.com/getting-started/install
Then run the following commands in the root folder of the project to install all dependencies and setup your Yarn workspace (monorepo):
# Switch to use Node.js version set in .nvmrc file (make sure the version is intalled)
nvm use
# Download and install dependencies
yarn
# Build any workspace package dependencies
yarn build:packagesTo run the Electron.js app locally in development mode, run:
yarn startThis repo uses vitest to run unit tests, which can be run with the following commands:
# Run all tests for all repo packages
yarn test
# Run tests for specific package
yarn workspace <package> test
# Run specific tests for file/folder in package
yarn workspace electron test ./src/commands/commands-registry.test.ts -t "should register and execute a command in WORKER"Note: For any commands running shell scripts, ensure you've updated the file permissions for the files so they can be run:
chmod +x ./scripts/*.sh. Also all scripts have only been developed and run on MacOS so may not run correctly on other operating systems.
# Run storybook to edit and test frontend UI components
yarn storybook
# To run eslint and prettier to check & format code
yarn lint # Only run eslint
yarn prettify # Only run prettier
yarn format # Run both
# To run all TypeScript checks across packages
yarn ts-check
# compile source code and create webpack output
yarn compile
# `yarn compile` & create distribution build with electron-forge
yarn make
# compile and publish app to different repositories with notorised builds
yarn publish
# run script to generate a new Cloud API TypeScript Client under the packages/cloudapiclient/src directory from the OpenAPI Spec
yarn generate-api-cli
# run script to generate app icons for MacOS/Windows
yarn generate-app-icons
# Generate 100x100 data:png avatars in the @angelfish/core library
yarn generate-avatarsWe welcome anyone who wants to fork and raise a PR back to this project with the following conditions:
- Your contribution is OK to be accepted under the AGPL-V3 license
- You follow the Coding Guidelines for this project
- All tests need to be passing before a PR will be accepted
- Please keep PRs small and focused so they're easier to review and merge
- New Features: Please raise a Github issue before implementing a new feature to check that the feature will be accepted before you start developing it. We welcome all bug fixes and improvements to existing features, but plan to implement an extension system in future which will allow any developer to extend and customise Angelfish without modifying the core project. Therefore we want to keep the core project small and focused for now on its core use cases. Features we see for future extensions that will not be added to the core project currently are budgeting, financial planning, tracking investment and loan accounts, bank syncronisation, among others. In general these are features that are not part of the core vision for Angelfish (i.e. Budgeting) or potential features we may monitize in future to support the project (i.e. financial planning and investments) or cost money to provide (i.e. Plaid integration to synconize bank accounts). Some of these areas are subject to change over time if we see a good argument or use case that should be supported in the core product, so start by creating an issue and we can have a discussion online or come back and revise decisions if needed in future.