Fund Tracker

A flutter application for budgets and keeping track of transactions.

I built this because I couldn't find any application that allowed a custom or a 4-week period.

Allows authentication with Firebase and uses Firestore as a cloud database on top of using the devices' local database as backup.

Features include:

  • statistics
  • custom periods
  • recurring transactions
  • custom categories
  • filters

and more...

To run

To build this application and run it on your device or an emulator, you need:

  • Flutter
  • Android SDK
  • XCode if you wish to run iOS

Follow the instructions here to set up: https://flutter.dev/docs/get-started/install.

Demo

The first screen is the login page.

login_empty
Click on Register to create a user.

register

Alternatively, you can log in with your existing credentials.

login

The home page is a list of transactions.

home_empty

Let's add a transaction. I bought an app from the Play Store for $1.99.

add_tx_gpstore

I can also choose from a preset of categories. Let's choose Games & Apps.

add_tx_gpstore_category

I also want to add an income. I sold my car for $5000. I chose Transportation as the category.

home_sold_car

Say I wish to create a custom category for things I've sold.
Let's open the menu and go to Categories.
This page displays a list of all the categories.
You can choose to show these in the transactions page by selecting/unselecting individual categories and change the order it is displayed in the dropdown.

menu_open_from_home

categories_default

But we are here to create a new category, so click on the floating + button.
In the category creation/edit page, you can specify the name, the icon (from MaterialIcons), and the colour.

add_category_sold_name

icon_selection

colour_selection

add_category_sold_finished

Click Add and at the bottom of the list, voila!

categories_sold_added

You can click on each category to edit them, if you wish.
For now, let's go back to the car transaction and change the category.
In the category dropdown, you can see that Items Sold is now available to use.
Select the category, save, and the transaction is now updated.

car_tx_sold_category

home_tx_sold_category

I just bought another app from the Play Store and wish to add a transaction.
As soon as I start typing, transactions from the past that starts with the same name are suggested.
Choose the suggestion. The name and the category are changed for you. Enter the rest of the details and save.

add_tx_gpstore2_suggestions

add_tx_gpstore2_details

Now that you have a few transactions, let's check out our statistics.
You can swipe to the left or click on Statistics.

statistics--1-

There are three main views:

  • All-Time
  • Period
  • Custom

The All-Time tab shows you stats from your first-ever transaction.
The Period tab shows you periodic stats, which you can select from the dropdown.
The Custom tab shows you stats from the range of transactions that can be set in Preferences, or you can use the date selector to select the start date in which to show the stats from. (TODO: Allow end date selection)

The statistics page currently has the following information:

  • Balance
  • Remaining days in current period / Remaining balance per day
  • Actual Income / Expenses
  • Expenditure per category (TODO: Consider income? preferences)
  • Top Expenses

statistics

stats_categories

stats_top_expenses

The transactions can be filtered from the home page (Transactions or Statistics). This filter is shared and affects the statistics.
You can filter by income/expenses or by categories.

filters

There is also a search function at the top of the transactions list.

Another useful feature is custom periods. By default, periods are set by month.
In the Periods menu, let's add a custom period.
I want a 4 week custom period that starts this Friday.
Don't worry about past transactions, this will set the past periods properly from any set start date.
Let's also set this as the default (active) period.

periods_empty

add_period_4_weeks

I've also added a 2 week period to show that the active period is highlighted in blue.

periods_active_4_weeks

Back to the home page and the transactions list, and we can see that the transactions are split in different periods.
The first two transactions were added on June 11 (before the current period started), and the last one was added on the 12th.

home_custom_period

The statistics page > Period tab also shows the updated period and any other periods that have transactions.

statistics_custom_period

Another feature that is essential are Recurring Transactions.
We can add this from the menu > Recurring Transactions.

recurring_transactions_empty

Let's say I want to give my little brother $5 for the next 5 days.
I can set the next date (or the start date), transaction details, the frequency, and if applicable, the end condition using either the number of times I would like, or the end date.

add_recurring_transactions_allowance

recurring_transactions_allowance

Now that the recurring transaction is added, let's go to the home page.
Since we set the next date for today, the transaction is already added.
(Note: the allowance transaction shows up before the google play app purchase because recurring transactions are added with the time set as 00:00)

home_recurring_transaction

The last item in the menu are the Preferences.
You can currently change these items in Preferences:

  • Custom Range for the Custom tab in Statistics
  • Default tab in Statistics when opened
  • Reset Preferences

preferences

GitHub