Summer Plans

Some people plan to spend more time at the beach during the summer.  Some plan to travel.  Some plan to make a dent in their summer reading list.

And some plan to finish rewriting an app that already functions perfectly fine, just to say that they could.  In my last post, I mentioned that I wanted to complete my newest version of Slowpoke by the end of the month.

The current app allows me to enter transactions against pre-existing budget categories and track my progress against those categories.

The new version of the app will allow me to enter transactions against pre-existing budget categories and track progress against those categories.  But with more cowbell.

Actually, there are some significant differences.  The existing app is backed by a Google Sheet and requires that I add the transactions manually.  Because I have to coordinate permissions for the spreadsheet, and I haven't filed to make this an "official" Google app, I'm signed out every hour, and at least once a week, need to acknowledge that, yes, this is a site I trust.  This isn't really as annoying as it sounds, since authentication typically takes 5 seconds. But, if I forget and start entering details for a transaction a day later without refreshing the page, that transaction's data is lost.  So, not the worst, but not the best.

The new version uses a site called teller.io to fetch my bank account information and transactions and dump them in a SQL database at regular intervals.  This means I'm less likely to miss a transaction because I didn't enter it manually.  The banks that teller fetches from are fairly numerous and seem to include all of my accounts.  In addition, since I don't need to access GSheets anymore, I can use Cloudflare's social authentication mechanism to log in via Google, but allow it to handle all of the sign in/sign out negotiations, so I don't have to worry about signing in every hour.

What's left to do on the rewrite?  Well, mostly pruning away extra functionality and fixing the AI cruft so that I can understand it.  As of this writing, I've spent 170 hours on this iteration.  Approximately 80 hours have been dedicated to parsing and displaying data from my investment accounts.  There is a tool similar to teller for investment accounts - SnapTrade - but it has fewer available providers and a less generous free tier.  It's missing some of my investment accounts, so I'll need some sort of statement parsing as a fallback if I want to capture that data without too much manual todo.

That's somewhat beside the point, though.  My current app doesn't track investment details or performance, so I'm cutting that out for Phase 1, because it won't reduce the existing functionality.

There are three main sections that I need to focus on for the release - transactions, accounts, and budgets.  I've spent approximately the last week (and 20 hours) rewriting transactions and budgets code to make sense and behave consistently.  Given that the accounts section is the last section I focused on (and hence the one where I didn't give coding agents a free pass for me to clean up at a later date), I'm assuming that'll be about 5-8 hours of additional cleanup to get it in the shape I want.

Part of this cleanup was a move from Alpine.js to _hyperscript for client-side JavaScript.  Why?  No reason really, or at least no great reason.  Alpine.js is a good framework, and it's currently more widely known by a multiple orders of magnitude than _hyperscript, but _hyperscript just reads better to me and, once you get the hang of it, it's much easier to write.

Ok, so then that's it, right?  8 hours to freedom?  Nope.  I still need to hook up the authentication mechanism, but given that this is a site for one person, I'm familiar with the Astro middleware that controls access, and Cloudflare tools are typically easy to drop in, I'm assuming this is about a 5-hour job at most (can't wait to eat those words).  The rest of the time will be spent shoring up testing scenarios and shutting off the little branches of code that may be nice features one day, but are just confusing to wade through at this point.

The site after that will come close to resembling a commercial financial app, but there will still be some oddities.  If I had more users, I'd have to spend more time creating a greater number of budget categories that meet common scenarios.  For instance, I don't own a car, so I don't have a category for Automobiles, which is not a sane omission for general release, as much as I want to move us all to greater eco-consciousness.

For this iteration, I'm also relying solely on accounts that teller has access to.  This isn't all that unusual.  If Mint didn't have access to your local podunk credit union, you couldn't download transaction data from it.  But, I would eventually like the ability to permit manual account creation and population to allow users to craft a complete financial picture, even if it requires a little digital elbow grease.  But it's complicated enough to build out functionality to track a bespoke account that it's not making the cut for July.

Anyway, sounds like a plan.  We'll see how well I can follow it.

Until next time, my human and robot friends. 

Comments

Popular Posts