A Flutter application to allow users to compare the performance of their pension funds. The app works by allowing the user to input the details of their pensions from their annual statements, then view the performance of each pension as well as how well they are performing in total.
- Enter information about pensions, including state pension
- Compare performance using charts
- All data stored locally on device in an encrypted database
- Ability to backup and restore data
The app is written in Flutter and uses Firebase for analytics.
To configure the Firebase services used by this application, follow these steps:
-
Create a project in Firebase
- Go to the Firebase console.
- Click on "Create a Firebased project" and give your project a name (e.g., "pension-compare").
- Follow the on-screen instructions to create the project. Make sure "Enable Google Analytics for this project" is enabled.
To run the app you will need to install flutter. Follow this Get Started guide.
- Clone the repository
git clone https://github.com/zjcz/pension_compare.git- Navigate to the project directory
cd pension_compare- If you don't have the FlutterFire CLI installed, run this command to add it:
dart pub global activate flutterfire_cli- Run the following command to configure Firebase for your Flutter app. This command will guide you through selecting your Firebase project and will automatically generate the firebase config files for you platforms:
flutterfire configure- Install the dependencies
flutter pub get- Start the emulator or connect a device
- Run the application
flutter runThe project contains a comprehensive set of tests.
To run the tests, use the following command:
flutter testThe project uses Maestro, a UI Testing framework for mobile to generate screenshots used in the app store. Uses the maestro_android_screenshots.yaml script to generate the images. See API Reference - Commands for a list of commands, or Automated Screenshot Generation with Maestro - Code With Andrea for more information.
The database is encrypted by Drift using the sqlcipher_flutter_libs packaged, as documented here.
The password for the database is entered by the user in the form of a passcode, which is then encrypted using the Crypt package. The hash of this is used as the password for the database. See also SqlCipher Documentation.
Uses the following packages:
- Drift for database management. Database is encrypted.
- fl_chart for charting. See Documentation for more information.
- flutter_riverpod for state management.
- file_picker for file selection during backup / restore.
- archive for backup / restore of data and settings.
- go_router for routing / page navigation.
This app was originally released on the Google Play Store. However, due to a change in personal circumstance I have removed the app from the store and made the source code publically available. Feel free to fork the repo and build the app yourself for your own use.
The Terms and Conditions and the Privacy Policy was generated at App Privacy Policy Generator
This project is licensed under the GNU General Public License v3.0 - see the license.md file for details.




