Yaba-2.0 Architecture

Yaba-2.0 is still in the works. This will come with an overhaul of the platform. I will still maintain yaba.markizano.net as a public interface to the app for you to be able to "try it before you buy it". However, I am going to expand on how the architecture will lay out with regards to a self-managed vs a hosted version of this application. Ideas keep coming on how I can manage this and I am so excited to share my designs with you and get your feedback on the direction being taken. This is still something we can construct together and build a team behind the project if it becomes useful.

Yaba Recap

If you're completely new to the project, welcome! Yaba is Yet Another Budgeting App. I got sick and tired of downloading CSV files from all my banks and managing them in complex Excel books just to be able to visualize my data around my spending so I can budget more efficiently. I built Yaba as a means of organizing my transactions in a way that's different than most apps. Most apps want you to treat a transaction like a bar you drop in a bucket and you can't do anything else with it. Whereas I want to sometimes attach a color coded sticky note to my transaction and then put on different color filtering lenses on to see my spending under different lights. Yaba let's you do this! Also, I don't like the idea of selling people's information without their knowledge or consent, so this app will always provide a version you can download and use to your hearts content whilst having the Ethernet cable (or Wi-Fi) disabled and unplugged! I want you to have the power of your data in your hands and make it as easy and streamlined as possible to manage your budgets and make it easy to develop healthy spending habits (you know, the ones you are aware of!).

This started as a PHP script a long time ago where I would munch together a bunch of CSV files together from my banks to create readable tables of how much I was spending where in my terminal. It's since evolved into a web platform that can serve as both an isolated app (like Word 2007 before Microsoft made it subscription based) or as a hosted platform with access to streaming your data using third party services like Stripe to connect your accounts and keep your data in sync. I am still building the hosted part out in this rewrite. More to come in this post now!

AngularJS -> Angular 2 Overhaul

This project has been completely ported from the since deprecated AngularJS to the TypeScript version of Angular 2 (actually, it's version 17 as of the writing of this blog, but you get what I mean, right?). So I have gone through and re-done just about every component and working to ensure its still as functional as a desktop-app while building the hosted aspect as well.

ElectronJS Addition

In order to have this working on all platforms, I chose ElectronJS to house the Yaba application. In this way, it won't matter if you are on Windows, OSX or Linux -- you can use Yaba! I plan on making the web platform mobile-first designs so use on iOS and Android are as seamless as can be as well. When I go to package the app, I can create different types of deployments depending on the target being catered.

Yaba Architecture

I have a pretty architecture picture to share with you 😍

Yaba Architecture

1) Users will be approaching the application with their CSV and XLS documents. I want to be able to parse them all and injest any and all statement data from any bank (eventually). For now, Yaba only supports CSV files. It parses the headers and interprets where to map them for its canonical model of a transaction.

2) Yaba will injest these CSV and XLS files and munge the data for us to crunch the numbers so we don't have to. Eventually, I'd like to get it to the point where it can sync with services like Plaid and Stripe to get your transaction history for banks that support those channels. I'm sure they aren't free pipe access, so this is where hosting costs, security compliance laws and all that jazz will come into play, thus sparking the need for a subscription fee if you will be using the hosted version for the streamlined access to all your transaction history and spend/income in one place.

3) Data can be stored either locally in a simple sqlite3 database or via a MongoDB if using the hosted version. I plan on ensuring Yaba supports microservices and HA and all those other fun things sysadmins must deal with on a daily basis. I know I can setup adapters and driver patterns against the databases to ensure consistent storage mechanisms no matter the storage choice in the software itself.

4) The results will then be rendered to users in table, chart, graph or other reports the user can then use for other purposes. I would love for this to eventually grow into a tax-document production software one can use open-source and free rather than having to pay for services like TurboTax to complete your taxes. I would clearly disclaim that this software is merely a tool for this and cannot guarantee accuracy according to the laws, but we can collectively come together to ensure this software stays up to date with IRS regulations in producing for you the best tax return for you!


Other features I want to include in this as I continue developing:

  • Profile Concept: I have different books I need to manage. If they are my own personal finances, my FinTech company finances, or my LMT finances -- I need a way to keep these segregated by switching "profiles".
  • Personal or Business: Both need to track finances, but businesses have more to consider. Eventually, as I learn about business financing, I want to include support for features into this software as we continue too grow this out.


I'm curious about what you think about this so far. Do you know of other solutions that might serve these purposes better? In what ways? I'm curious to know what you think -- drop a comment below and we can find out more in detail!


Popular posts from this blog

Setup and Install Monero(d) -- p2pool -- xmrig

Build xmrig on Linux

Git: Process