Yet another personal project: my personal finance app dream
Tags: flutter, mobile, beginners
Published: 2023-01-25 17:03:38

Hello, I've decided to be a little more structured in making my projects and creating a weekly "report" sorta thing would be pretty cool. This would also (hopefully) help me to stop procrastinating so much lol. Also I'd have something to put on my LinkedIn so that's pretty neat. 

> This "article" isn't too formal and please note that I am pretty much a beginner at this point, so if anyone wants to criticize *literally* anything, I will take it with open arms. Tell me I'm dumb when I'm dumb, I can take it (I won't cry I promise).

> I also think this article is a bit too long, but I decided to not dwell on it and I'll work on making my future articles be more image heavy and more fun to read, so expect shorter articles in the future.

## Introduction? I mean above is already an introduction somewhat but whatever.
Welcome my dear random readers. Today I will introduce you to my new baby boy, a soon to be grown man (this is analogy, I'm single), named Pecunia. Pecunia will become, "the balls to the walls personal finance app" or at least that's what I plan for it to be. Now why exactly do I want to make a personal finance app? Hoho, my lovely random readers, the answer is simple, I just could not find the perfect app that has the perfect balance between good design, a good user experience and most important of all, free. It's always, this app looks good but is too simple, this app has amazing features but looks like it was designed in the 80s, this app is decent but costs $10 a month, and.. you get the idea. And so I crave a personal finance app that meets my exact needs, and is perfect (of course, biased to my preferences), therefore I have made the amazing decision to throw away my previous project (it was an app to like track your storage with pictures and stuff, it was pretty bad.) and work on this baby boy! And I promise (no guarantees) that I will work on this until it becomes something I would use on a daily basis!

## Hmm, Pecunia?
Let's start with the most important question. What does Pecunia even mean? Well my brother (or sister, I don't discriminate), you asked a very good question! With my great mind, I have deduced a compelling conclusion, since my app is gonna be a personal finance app, why not name it something related to finance? Shocking, I know. On a more serious note, I really do not have any idea what to name this app. I was kinda torn between Financyer and Abundance but as you can see, my naming sense isn't something I can flaunt (the storage tracking app I mentioned was named Storayge). So I decided to follow the footsteps of NASA. Let's name our cool project related to something cool, like Greek and stuff! And so I fell upon Pecunia, which is money in Latin. It's a pretty good name for now, and this is probably going to be the code name for the project. I mean think about it. "Project Pecunia" sounds pretty bad butt (Can I say the "a word" for my bottom? Is that like crossing the line or something?).

## Ok, I'll stop with the filler
Let's get a bit more into the app itself. I don't really have much of an idea on how to go forward from here, so let's start with talking generally what I hope to do and to gain from making this app.
### App-wise:
1. I want it to look good. I kinda want to challenge myself and make it a little more heavily animated and aesthetically pleasing. So forgive me if I sacrifice beauty over function.
2. I want it to be intuitive. Though I have no idea on how I would go about on doing it, I guess I'll go with the flow and see what I can do.
3. It should be feature-rich, obviously, and so during the making app I should always keep in mind that I will add and possibly remove stuff, not that I know what "keeping it in mind" actually mean in practice, but, well, I'll keep it in mind.
4. Customizability should be key! And the first order of that business is I'll be making the Dashboard on a module based system, so the user can change out modules according to what they like.

### Development-wise:
1. I want to not rely on Firebase. That thing made my life so much more easier it's scary, so I'll be relying on another service. Since this app would also have like tons of relational data (I'm completely balling this, but I reckon a transaction-recording app would have a lot of relational data), a NoSQL database wouldn't do, so a SQL database it is, (I haven't learnt a speck of SQL so that's gonna be a ride)
2. I also want to build the app with a test-driven-development in mind and focus on a prim and proper architecture, which I know will make me happy in the long run.
3. I want to learn a lot more on Flutter animations and design. Right now, all I'm able to do are basic Flutter designs, but what I want is to be able to create projects like the ones done by gskinner (they do really cool stuff).

All of this sounds like the perfect recipe for another abandoned project honestly, but I'll hopefully make sure that it won't be the case.

## Ok cool, now let's talk about what I have now.
Most of what I've done is mere planning and some experimental designs. I really want to dive into the code but I know very well what it means to start developing with no clear development path, so I'm gonna make sure to take the planning a bit more seriously. Here's the list of features I have in mind:

> Note: This app will not be connected to banking institutions, as it will make it a full-blown financial app with, what I expect, far more headache in both in the development and legal stuff.

### Income and expenses (and accounts of course)!
The most important part of a personal finance app will of course be the ability to track your transactions, and this will be the very first priority for the app. There will also be Accounts, which are simply a group of transactions. There will be two types of Accounts, Checking and Credit, where Checking is your generic bank account and Credit will be, well your credit card account. Each transaction will have at least one category and I want to be able split transactions into multiple categories. Like you may go to Walmart and pay once, but you're buying groceries and clothes for example.

### Budgeting budgets of budgetland.
Budgets are simply a no-brainer. I want there to be two types of Budgets. One-time budgets and periodic budgets. These budgets are pretty self-explanatory no? An example of a one-time budget is if I set aside 500$ for "fun stuff". Then whenever I add a transaction, I could assign it to the "fun stuff" budget. There will need to be order on how the app decides which budget the particular transaction lives in, but that will be a topic for another day.

### Hail the debtlord
Debts, the scary word every adult is afraid of, me included. This app will have some sort of debt or loan system, which will tie in with the accounts and budgets, somehow. For now, it will be a simple one-to-one debt. Like personal debts. You can create a Debt entry, and you can link a particular transaction to that debt, whether you are working towards it or well, against it. With the way I'm thinking right now, I would say that creating a Debt entry would simply mean creating an income transaction and I guess tagging it with a Debt tag, the specifics would also be a topic for another day.

### Scheduled payments!
Bills. The scary word after debts. Having the ability to set scheduled payments would be something fundamental to a personal finance app. I mean how would I keep track of my Spotify, Youtube, Disney+, Netflix, RocketMoney, rent, electric and the twenty other bills? (okay I don't have that much subscriptions, I'm a pretty financially constrained student.) But in any case, having scheduled payments, especially recurring ones are essential.

### Graphs!
Yes! My favorite! Having beautiful and interactive graphs will be the hallmark of the app. I mean what is a financial app without a graph? Truly unprofessional if there aren't any graphs. 

## So what does this all mean?
Well, this project will be my jumpstart to me improving myself as a whole. In the past couple years, my development skills have been, at best, stagnating, which is the result of both the roller coaster of a ride my life has been as well as good old procrastination (seriously Overwatch 2 is bad for me). But with this, I hope for a better tomorrow. In the upcoming weeks, I hope to tell more of my story. I have lots of things in mind and lots that what I want to learn. I'm going to be learning how to make 3D artwork, running my own server, making complex animations in Flutter and UI design. This "series" is less of a dev blog for Pecunia, but a personal blog detailing all that I have and will do towards the success of the project. This will be the start of a long journey, a journey I hope to go through with you, random reader.

## Feet
Wow you read this until the end? Amazing. If you are somehow a professional app developer and saw that something I said was absolutely dumb, do comment! If you are a writer and felt that my writing was horrendous, do comment! If you are just a random reader, well I hope you got a good read. As a gift, here's some screenshots of the app design that I have (It's just two pictures but it's something.)

![Pecunia Example Dashboard Screen](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/95xqordez7s2c84yij8g.png)

![Pecunia Example Account Screen](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/53w74n3opea8i5enj41c.png)