Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: Expense Tracker as a PWA with Google Sheets backend for privacy (github.com/jakubgarfield)
94 points by jakubgarfield on June 20, 2017 | hide | past | favorite | 46 comments


>Don't share sensitive data with 3rd party.

Correct me if I'm wrong but it stores the data on Google's servers in which case you're actually sharing it with a third party.


I think it's similar to [Security Through Obscurity](https://en.wikipedia.org/wiki/Security_through_obscurity), since Google may not be interested in one single person. But still, it only means Google doesn't want to, It doesn't mean they are not able to. Plus, using Google Sheets as backend means you have to choose "publish to the web". While the data was set to public, you've dropped the [expectation of privacy](https://en.wikipedia.org/wiki/Expectation_of_privacy). And I'm sure Google is still going to analyze your usage of their product no matter what.


Yeah, the wording is probably not quite correct, but I think the point they are trying to make is that if you are already trusting Google, you are not adding and additional party who's server has access to your data.



The tracker is heavily inspired by Mitul's work – also I contributed a bit to his project. But I wanted to customise it slightly to my needs and use React along the way (to have a nice showcase for it).

And yes, you are right – Google is 3rd party and the wording is slightly unfortunate, but what I meant is that the security will be totally different level if I'd implement the backend myself and there won't be anyone machine learning on your expense records (apart from google looking at a generic spreadsheet).


> there won't be anyone machine learning on your expense records (apart from google looking at a generic spreadsheet).

… how is this not “anyone machine learning on your expense records” again? Does Google specifically forbid themselves that, and I didn't notice? Piercing the veil of “generic” is one of the main things classification ML does, yes?


I think it is only storing data with Google. So in this schema:

1st party: you, create the data

2nd party: Google, stores the data

3rd party: none.


Well played! :)



I used to log every spending in an expense manager before but found it redundant. Now I've built a selenium utility that logs into my bank account every morning (deployed on cloud), calculates my last day's spending and remaining budget and sends me an sms at 8:30 on how much I've left to spend today and savings projection! Haven't touched any finance app ever since


How do you deal with investments and transfers into savings account?

When I track my expenses I want to ignore them – as I set a budget to spend $1000 this month. Savings are not really an investment but if I transfer $500 into savings it's hard to track the budget – maybe some reference code could help with that.


This is where different accounts with automatic direct deposit really shines. My paycheck is directed several different ways - I have a household bills account, a savings account, and a daily spend account. My paycheck gets allocated to each account automatically. No thinking required, if it's in my daily spend account it's been allocated for spending.

Once the money is in my savings account I do choose to reallocate the extra (beyond emergency fund) to long term investments.


Nice approach – we don't separate between the that many accounts and it is harder to automatically track the spendings afterwards.


The other thing is if you put all your bill money in a separate account automatically you don't even really feel like you're paying bills psychologically, you just get used to the money in your spending account being the only money you have. This is especially good with larger less frequent bills, just amortized them per paycheck. For example, I usually use around three tanks of oil a year. The oil bill comes frequently in the winter but only once in the summer (my water is heated with oil). the oil is amortized to ~$60 a paycheck. That $60 goes directly from my paycheck into the "bills account" every pay and I never worry about the oil bill, when it comes I pay it from the already allocated bills account.

It's also impossible to go over budget without noticing, you'd have to take the difference out of the savings account. If your budget is wrong you'll notice immediately.

That's just my approach though, and it works for me. Other people may have different methods that work for them.


I only keep my monthly spending budget in current account, and everything else ("savings", pay, rent etc) goes to the savings account. And for this utility I only monitor current account which is directly linked to my cards so works pretty well for me. My bank in ANZ so they have this setup by default.


I just looked into it and it seems that Kiwibank doesn't provide any API access (you can download exports manually thought). ANZ might be a good option then :)


That's why he was saying he runs selenium to scrape it. Basically zero banks provide an API access to non-partnering institutions.


I missed the part about selenium scraping – thanks for pointing that out.

There has just been a project submitted to solve this on HN – https://blog.teller.io/2017/06/12/the-api-for-your-bank-acco...

But it seems to support only a handful of UK banks – no ANZ or Kiwibank.


I wrote a number of Selenium scripts for grabbing credit card details, etc, but Wells Fargo seems to have pretty good anti-Selenium protection built in - even when my traffic seemed indistinguishable from organic browsing, it wouldn't let me log in.


Interesting. Care to share the code behind the utility?


I use Mint.


I do too. I find it odd that it took them so long to properly account for savings. They booked the transaction as a loss in my checking and a gain in my account, but flagged it as over spending.


This (and basically most PWA's) could use RemoteStorage [1] perfectly, to be independent of Google.

[1] https://remotestorage.io/


Are there good remote storage hosts?


The reason I said "could" is because it needs a lot more adoption, which is holding it back because it's much less attractive due to lack of adoption.

That said, I think the de facto (/only) option is https://5apps.com/. I also recall that you were able to use Google Drive and Dropbox with the library, but I can't find info about that now...


Yeah, I feel like users need to have a data provider that they trust


My solution is to use GnuCash with a git repository. I then use Google Keep to make notes of expenses on the go and once every few weeks I copy them in to the accounts. That way I get the full power of accounting software, with control of my data.


You can actually use gnucash with pgsql. It's centralized, but nobody wants to deal with merge conflicts on a sqlite database anyways.

If I had free time, I might cook up a web interface to add minor expenses with. But that's sort of the nature of gnucash -- those with cash to track typically have less time to track it with ^_^.


It seems to have a nice mobile app as well – cool!


> with Google Sheets backend for privacy

Read it once again out loud, slowly.



Yeah, that inspired me to spin off my own – see the reply above.


Sorry, missed that on the repo README.


Why not use ledger as a backend, it's free and opensource and can also be hosted on whatever cloud you want and encrypted.


I looked into Ledger when I was writing a small invoicing app (of course I wrote it from scratch – but I learnt a few things and have a small app in my portfolio).

For this project I'd argue that you need to host it yourself, you don't get powerful visualisation (charts for monthly breakdowns) and extensions (like GoogleFinance for currency conversions).

From a privacy perspective – it'd be a better choice but you are responsible for securing your server.


Which ledger do you mean? I found several with that name...



Looks nice and clean. Would be nice to add a page that visualizes expenses over a period of months.


Thank you!

The visualisation happens in the spreadsheet – https://docs.google.com/spreadsheets/d/1eYrQf0xhs2mTSWEzQRfS... – check out the Current and Previous sheet. I like to use it on the spreadsheet side to keep the app simple and I use bigger screen for the analysis anyway.


That looks great. I've just only just finished writing an automated importer of bank transactions into a spreadsheet, but I've been using Airtable instead. I was going to write some interface, but maybe this can be reused instead...


Technically I love the use of PWA and material design.

I hadn't seen material.io used in an application and it looks great.


I wish I knew about http://www.material-ui.com/ before I started finished this project.

They are React material design components – the integration would've been much simpler (I assume – haven't tried).


nice one. something like this has been on my "things to build when i get some spare time" list for a while; i've used a bunch of budgeting and expense tracker apps and never found one that quite ticked all of my boxes.

thanks for sharing :)


Thank you for the kind words. It is interesting that everyone has a slightly different set of requirements for apps like these.

Maybe it is my unwillingness to learn how to work with different apps. For a time I was happy with WalletApp but at a certain point they migrated Categories and sync stopped working properly and there were discrepancies between my and my partner's lists. Also, lots of functionality I wasn't using.


> Google Sheets backend for privacy

Umm.. what?


Kind of interesting, actually. "You don't have to trust us, only Google."




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

Search: