My side project is a personal budgeting web app [0] based on these principles. The technologies to support this type of architecture are available and fairly mature.
For example in my budgeting app:
- All of the user's budget data is stored client side in IndexedDB
- Offline support via a service worker
- Peer to peer synchronization between devices via WebRTC data channel
- Lightweight IdP server which also handles the WebRTC signalling (via web sockets)
This setup is nice because the user's data never touches the server and very little server side infrastructure is needed (none at all if you don't need data synchronization). One downside with the data sync is that both devices must be online with the app open at the same time to sync, but perhaps this could be improved with web workers?
Looks visually quite similar to Actual[0][1][2] (open-source, local-first). Did one influence the other? Are they both inspired by some other budget software?
I discovered Actual while I was working on Dollero although it was not open source at the time. I believe we were both influenced by YNAB classic, hence the similar layout. I imagine hosting Actual was time consuming and expensive for the author because all syncing appears to rely on a centralized server and database. I'm hoping to avoid this with Dollero because the peer-to-peer syncing requires a much simpler server and is cheap and easy to host.
> but perhaps this could be improved with web workers?
This also means that I need to have a constantly running web worker on my phone/tablet etc...? In my time I am also trying to solve this problem of "data never touching a server" but I believe we're not there yet, despite all the devices we have: sometimes the smart watch is off, sometimes the laptop is off, etc., so you need a mechanism similar to "Google drive", and who never had sync issues with that? And that's a supercentralized solution. It's super hard to "merge" in a distributed async system.
You can add push notifications or whatever, the issue will be resolving the conflicts. I think the local-first ethos is valuable in situations (e.g. resilient communications a la reticulum network), but misses to address another bigger problem. Perhaps someone with knowledge on CRDTs, or data structures, knows better how much of timestamp this might be able to catch... maybe one day we have Transformers Models that take the data on both ends and just 'hallucinate' a merge that you can then manually intervene (in the case of code, run tests).., idk.
Dollero is a personal budgeting web app which doesn't store any of your budgeting data in the cloud. Instead your budget data is stored locally in your browser with IndexedDB and is synced peer to peer with your other devices using WebRTC. It's currently is free and makes no money although I would like to eventually charge a small monthly fee for syncing your budget between devices.
I created a personal budgeting web app which doesn't store any of your financial information in the cloud. Instead your budget data is stored locally in your browser with IndexedDB and is sync'd peer to peer with your other devices using WebRTC.
Looks heavily inspired by youneedabudget (YNAB). Accurate? I assume it is, since you offer an "import" from YNAB.
Did you start creating this after YNAB launched their higher prices or what was the impetus?
I have my doubts about there not being a dedicated app on the phone. The most important feature of YNAB is being able to easily add transactions and since you are going the route of no automated import, manual transaction adding from mobile will be CRITICAL to get perfect.
YNAB's solution is really, really good in that space. How does yours compare?
Thanks for taking a look at Dollero. I've been a YNAB Classic (YNAB4) user for almost a decade but was disappointed when they moved to a SaaS cloud based model (even though I understand their motivations). I enjoyed not paying a monthly fee and that syncing was supported through Dropbox where I had full control of my data. YNAB Classic hasn't been supported for a while and I didn't want to wait around for an OS update to kill it so I created Dollero.
I enter most of my transactions on my phone and I agree that the mobile experience is key. Dollero is a responsive PWA so it can be used offline and can be installed by "Adding to home screen" on a mobile device resulting in an experience that is very similar to a native app. I'm continuing to polish and improve that part of the app.
YNAB is a great product and is ideal for people who are new to budgeting and desire an automatic bank account import.
Dollero is for people who want an envelope budgeting system, like YNAB, but are price sensitive and value their privacy. Dollero is free to use. Data syncing between devices will be a small monthly fee (currently free while in beta) making it much more affordable than YNAB, especially for folks in low income countries. Dollero respects your privacy, your data stays in your browser and is synced directly between your devices. For existing YNAB users I've added back some features that were removed from the new YNAB like multi-month view and carrying negative category balances.
Yeah because you can always OCR later. Also make it a paid option so you can cook into Azure Cognitive Service or something similar.
One thing I always wanted to have is automatic consolidation of receipts with credit and debit. Then with the itemization be able to list the weight/size so you can track shrink flation. I found it too hard to do this. My bank surprisingly had this feature but got rid of it.
Now I just set a savings rate and withdraw it. All the apps seem to have high friction. Also shared budgets are another challenge.
For example in my budgeting app:
This setup is nice because the user's data never touches the server and very little server side infrastructure is needed (none at all if you don't need data synchronization). One downside with the data sync is that both devices must be online with the app open at the same time to sync, but perhaps this could be improved with web workers?[0] https://dollero.app