Budgee has been built so that Brendan and Sarah don't have to spend time worrying about their finances.
The reason I made this is because over the years, I've used many financial apps, tools, websites etc to manage and plan my finances. None of them worked for me.
Yes, I could use an Excel spreadsheet. Buts its 2021! Yes, I could spend >$50/month on financial software SaaS applications like Xero, MYOB. But do I really need all the functionality they provide? No. Does they actually work specifically for me? No.
It's time to build something that automates my financial life, something that is scalable, something that integrates with all my financial accounts (banks, super, insurance, bills, invesmtent portfolios, crytpo accounts etc).
The goal is to be able to spend more time with my kids, my family, whilst being able to look at a dashboard when I'm walking down the hallway of my house, look at a monitor that is secured to my face, and see that everything is green and in check!
The Health pillar will provide functionality for
We will be using a Firebase project to manage most of the Budgee backend ie database, hosting, functions, storage etc.
In the Firebase console, click Add project, then select or enter a Project name. Click Continue.
Disable Google Analytics. Click Create Project.
The project will be created. Click Continue once it has been created.
You will then be taken to the Firebase console project overview page. Project creation is complete.
In the center of the Firebase console's project overview page, click the Web icon </> to launch the setup workflow.
Enter your app's nickname. In this case, budgee
. This nickname is an internal, convenience identifier and is only visible to you in the Firebase console.
We will not setup Hosting yet. We will do this later.
Click Register app.
There are a few ways to add the Firebase Web SDKs to your web app (CDN, npm, hosting URLs etc). We will use yarn
.
Copy the Firebase configuration values from the Firebase console. You will need these in the next steps. Click Continue to console
.
Install the Firebase SDK via yarn yarn add firebase
Using the config values you copied in the previous step, you can initialize your Firebase application. This is done within firebase.js
Firebase and React are now connected
We will be using Firebase storage to store uploaded files and documents into Budgee, as a landing area for subsequent upload on contained data into Firebase Firestore database.
For example, a monthly bank statement csv may be uploaded to Budgee. It will land in Firebase Storage in the first instance for futher processing.
From the navigation pane of the Firebase console select Storage, then click Get started.
Review the messaging about securing your Cloud Storage data using security rules. For now, we will leave the defaults. Click Done.
Select australia-southeast1
as the location for your default Cloud Storage bucket. Click Done.
firebase init
and choose to configure cloud storageWe will be using Firebase functions to response to various events in the application.
For example, we run a cloud function to extract data from uploaded files (in Firebase Storage) and insert data records into Firebase Firestore.
Install the Firebase CLI
npm install -g firebase-tools
The following wizards informs you on how to create functions. We will click through these, but wont run the commands mentioned, just yet...
Initialize your project
Run firebase login
Navigate to a new directory that will contain your firebase function code (e.g budgee/
)
Run firebase init functions
Run npm install
in the /functions
directory.
To use Functions you will need to upgrade your project's billing plan
Write JavaScript code (or TypeScript code to transpile at deployment) to handle events from Firebase services, Google Cloud services, or other event providers.
We will inevitably follow the process to write functions that respond to Cloud Storage triggers. However to get started, we will use the the sample helloWorld function that was created during firebase init functions
.
Uncomment the helloWorld function
Use the local emulator to test your functions.
Run firebase init emulators
Run firebase emulators:start
and check the output for the URL of the Emulator Suite UI. It defaults to localhost:4000, but may be hosted on a different port on your machine. Enter that URL in your browser to open the Emulator Suite UI.
Test the helloWorld function by browsing to the URL listed after firebase emulator starts up. You will also be able to check the Functions Emulator logs.
Enable billing for your project and deploy your functions using the Firebase CLI. You can use the Firebase console to view and search through your logs.
Once your functions are working as desired in the emulator, you can proceed to deploying, testing, and running them in the production environment.
firebase deploy --only functions
After you run this command, the Firebase CLI outputs the URL for any HTTP function endpoints. In your terminal, you should see a line like the following:
https://us-central1-budgee-dev-aff3c.cloudfunctions.net/helloWorld
After deploying, you will see your function in the Firebase console
You can execute your function
You can also view logs in the Firebase console for Cloud Functions.
If you need to delete functions in development or production, use the Firebase CLI.
We will be using Firebase Firestore as our database.
Navigate to the Cloud Firestore section of the Firebase console. You'll be prompted to select an existing Firebase project. Follow the database creation workflow.