Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: I built an inbox-zero expense tracker with CRDTs and SQLite in browser (tender.run)
8 points by stpn on Nov 30, 2023 | hide | past | favorite | 8 comments
Hi everyone! I’ve been working on a small personal finance tool called Tender for the better part of a year.

I got tired of doing expenses by hand - going through several accounts to figure out refunds, subscription cancellations, getting paid back via venmo, etc. I’d get to the point where I’d have to go through months of transactions at a time if I got lazy and fell behind.

The workflow in Tender is centered around getting to inbox-zero. Transactions leave the inbox when they’re categorized and there’s a basic rules engine for automation. You can also do things like add notes, set reminders, and link refunds to their original payment. If you’re a splitwise.com user, there’s an integration to send shared expenses to a group to be split.

On the technology side, the data is stored using Automerge (crdt) and indexed using sqlite (wasm) - all running in the browser so the UI stays pretty snappy. For persistence, the data is also backed up server-side using Automerge’s sync protocol. Like everyone else in this space, I’m using plaid to sync in account data.

Although Tender isn’t multiplayer, the crdt still gives a lot of out of the box: syncing, file format, change tracking... Since everything is running in the browser, I’ve also hacked up a quick demo environment at https://demo.tender.run that you can play with!

I’ve put in a decent amount of effort into the project at this point, and would appreciate any feedback on the product, pricing, feature requests, etc! If you want to give it an extended try, there’s a coupon code (HN2023) that basically prices Tender at-cost for me.



Very cool, I signed up for a trial to kick the tires!

I created a tool that helps people stay on top of shared transactions (https://reconcile.app/) a few years ago and have recently been working on another iteration of it that has some similarities to what you've built, but with a focus on couples who share much of but not all of their financial lives.


Woah, neat! It seems like we had pretty similar thinking for the kinds of workflows you'd want.

It looks like you have an Venmo integration ("Sent to Venmo" in screenshots) which I haven't quite cracked yet - curious if you're willing to talk about how it works. Tender has venmo via plaid, but it only supports importing tx, not initiating payments/requests.

I thought about either: integrating unofficially (https://github.com/mmohades/VenmoApiDocumentation) or just doing links to venmo payment (i.e. venmo.com/user?pay=500) and having some way to import venmo contacts

Neither seems great from a UX or security perspective.


Yeah, my solution is just using a deep link - I'm unable to track whether or not the payment is completed due to the lack of a Venmo API.

I wrote about how it works here: https://gabeoleary.com/posts/venmo-deeplinking-including-fro...

When I wrote this it only worked on mobile. The deep link would take one into the app with the amount/details etc prefilled out. Just tested and it looks like the same format works on desktop now too.

I had until just now not realized that Plaid has a Venmo integration.

I could imagine using the deep link to begin the transaction and then using the plaid connection to look for it's completion...


I tried to link Splitwise, but keep getting "The authorization flow was cancelled" While the authorization window is open.


Although it seems to have actually linked successfully after going through the Splitwise auth flow despite this error.


Thanks for the report - I'll take a look at see what's going on. (There's some postMessage funny business there that tries to make the oauth experience nice that might be the culprit...)


Project looks nice. Have you thought about using ElectricSQL? Looks like a use-case for a sync layer like this.


I did consider those sorts of systems but decided against.

One facet of that is that I’d like ro support e2e encryption, which feels harder to do in something electricsql and co (since the postgres sees fields for replication). e2e2 seems more obvious in automerge (though, also not supported out of the box), and I recently encountered secsync.com which looks like a new-ish project that could get there.

I’m really excited to see the influx of local-first frameworks though. A lot of these solutions also weren’t nearly as mature when I started working on tender about a year ago. If I were starting now instead of a year prior, I might try to go with github.com/vlcn-io/cr-sqlite which seems to share ideals with my architecture, and automerge has some issues I've run into.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: