Expense Tracking App
First, a user needs to create his or her account by clicking the “Create Account” button. After entering the user name, user email, password, the user can also upload an image for the profile photo of the new account. To avoid multiple users with the same email address, we need authentication in the database. After the new account being created, the user can log in and be able to use this app. We also provide an additional function for users who forget the passwords for their accounts. The user only needs to enter the account related email at the sign-in page and he or she will receive an email for resetting the password for the account. Then the user can log in the app account using the new password. Since the app store all information in Firebase, a user can access his or her account with any android devices. Once a user login the account, he or she can view all the recorded group account books on the main page. Clicking the top-left button, NavigationView will allow the user to navigate between group account book list and individual account book list. At the top of the page, the user can create a new account book with a name and selected currency. The currency of one account book is for the user view “Total Expense”, “My Expense”, and “Total Income”. Assume one account book set the currency to “USD”, despite what currency is for each transaction in this particular account book, the “Total Expense” is calculated in “USD”. This is convenient for the following situation: A group of Americans went travel around Canada and they use the Canadian dollar to pay for their expenses, so they kept all expenses in “CAD” in one account book. When they got back home, they wanted to calculate how much they owed to others and they only have US dollars to pay back other members. Using the calculate button in this account book, they would be able to know how much they owned to others in the US dollar. Nevertheless, the currency for both the account book and transactions can be edited anytime. Any participated users in an account book can add transactions anytime they want. Besides selecting the category, date, currency and entering the note, one user can select one payer and multiple participants for one transaction. The user can set the sub-expense for each participant and a button will help calculate the total expense. As he or she clicks on the save transaction button, the transaction is saved in the account book and all participants of this account book can view this transaction in chronological order. The total expense of the account book (Total Expense) and the total expense for each user (My Expense for the current user) will be updated. By clicking on one existing transaction, any users who have access to this account book can view all the information of the transaction (date, category, note, currency, expense, payer, participant(s)). The floating menu at the right bottom allows users to edit the current viewing transaction and the creator to delete the transaction. Due to the thought that one debtor is not allowed to edit the transaction to reduce the debt as they want, only the creator of the transactions and account books have the authority to delete those transactions and account books. Since it is possible that there are many recorded transactions involving many users within one account book, calculating the payments to even out the group can be a daunting and complicated task. Using EzBill, there is an algorithm to calculate who owes whom how much and how to settle debts in the group. In the most efficient way, with the minimum number of payments, everyone can settle the debuts within a group (group account book). To accomplish the above functionalities for a group account book, the most important part is to share one group account book with other users. To do so, there are two approaches. The first one is for users to scan the QR code generated by a group account book. Inside the floating menu of a group account book, there is a button to generate a QR code for this particular group account book. Users who want to add this account book to their group account book list can use the “Scan QR Code” button (in NavigationView) on the main page. Since the group account book “put” the account book Id in the generated QR code, the users can then scan the code and add the Id to their group account book list, in order to view and edit the account book as a participant. After adding new participants to an account book, the profile photos of some of the participants can be shown at the top of the group account book page. The “…” button allows users to view a list of all participants’ usernames and emails. Since the problems of some users could share the same username could cause misunderstandings, the use of profile photos and unique email helps identify each participant. The second approach is for the participants of one group account book to add new members into the shared account book. In the floating menu of a group account book, there is a scan QR code button to scan a user’s QR code (generated in the main page’s NavigationView). Any participants of this account book can add new users to this book, as long as the users are willing to show their user’s QR codes. An individual account book shares many similar functionalities with a group account book; however, individual account book also has some unique properties. The user can not only create expense transactions but also keep track of the income, so the floating menu contains access for both “Add Income” and “Add Expense” and the account book could display the total income and total expense. Since the individual account book only involves one user, it could generate a pie graph for the expense category summary. Ordered from the largest proportion, the user could view the categorical percentages of their expenses. For individual expense, the total amount of expense can simply extract from a paper receipt, so as suggested (project pivot), we use a text recognition method to extract the “Total” expense from the receipt using a camera. Since our initial proposed functionalities are too simple, we have accomplished all of them and we added some additional functionalities to complex our application. For example, users could upload profile photos while creating their accounts.