Fullstack journey - Building a budget tracker (Part 1)
Just to be clear, this isn't a guide or tutorial, and I probably won't be following all the best practices. These will be posts about my journey in building an app that solves a problem for me, and the app probably won't be published to an app-store because, let's be honest, I don't want to pay a large Firebase bill.
I'm building a budget tracker app, using Firebase as the backend, Svelte for the frontend, and Flutter for mobile. The thought process below is pretty much copy-pasted from my notes.
Web and mobile app, used to keep track of your budget by setting a monthly budget, and adding expenses by a press of a button. Set a date that resets the budget to set amount, and stores the leftover from the previous month as savings.
REST API (Python) or Firebase?
A Flask or Django backend would be more complex, but would it be better than Firebase? Probably not.
Firebase has authentication, uses a NoSQL database which is OK because there isn't any complex relational data, and it takes care of hosting.
React integration with Firebase is pretty awful, so an alternative is needed. Angular works well, but large bundle sizes and learning curve makes it a bad choice. Svelte on the other hand..... 😍
You needn't ask, for Flutter is our savior!
Firebase takes care of almost everything, so all we'd need is to organize our data. A sub-collection of entries for expenses, in a collection of months might be a good choice, but it will likely depend on the frontend code complexity. An easier choice might be an expense collection, with each expense storing relevant month and latest budget, although this feels hacky and probably isn't good for adding new features.
Web & mobile app features
- Last ten expenses
- This month's expenses
- Expense history (expenses by month)
- Top expenses
- Average daily expenses
- Savings (leftover from last month added as savings)
- Monthly savings goal and how to reach
So, when do I start?
I'm starting right now, although this would take a good chunk of time. I'll try to post daily but I can't guarantee that.