tvl-depot/tools/monzo_ynab
William Carroll 17c68d654b Prefer reading secrets.json to using pass show
I'm attempting to maintain a top-level secrets.json that defines all of the
sensitive data that I'd like to version-control without exposing everything in
cleartext to the world. To that end, I'm using `git secret`, which will use
`gpg` to encrypt secrets.json everytime I call `git secret hide` and decrypt
everytime I call `git secret reveal`.

I'm going to try this until I don't like it anymore... if that day comes...

I should write a blog post about my setup to solicit useful feedback and share
my ideas with others.
2020-08-20 18:31:37 +01:00
..
monzo Move monzo_ynab into //tools 2020-07-20 10:15:47 +01:00
ynab Move monzo_ynab into //tools 2020-07-20 10:15:47 +01:00
.envrc Prefer reading secrets.json to using pass show 2020-08-20 18:31:37 +01:00
.gitignore Move monzo_ynab into //tools 2020-07-20 10:15:47 +01:00
auth.go Move monzo_ynab into //tools 2020-07-20 10:15:47 +01:00
job.nix Move monzo_ynab into //tools 2020-07-20 10:15:47 +01:00
main.go Move monzo_ynab into //tools 2020-07-20 10:15:47 +01:00
README.md Move monzo_ynab into //tools 2020-07-20 10:15:47 +01:00
requests.txt Move monzo_ynab into //tools 2020-07-20 10:15:47 +01:00
shell.nix Drop support for dir-locals.nix, <nixpkgs>, etc. 2020-08-20 11:26:32 +01:00
tokens.go Move monzo_ynab into //tools 2020-07-20 10:15:47 +01:00
tokens.nix Move monzo_ynab into //tools 2020-07-20 10:15:47 +01:00

monzo_ynab

Exporting Monzo transactions to my YouNeedABudget.com (i.e. YNAB) account. YNAB unfortunately doesn't currently offer an Monzo integration. As a workaround and a practical excuse to learn Go, I decided to write one myself.

This job is going to run N times per 24 hours. Monzo offers webhooks for reacting to certain types of events. I don't expect I'll need realtime data for my YNAB integration. That may change, however, so it's worth noting.

Installation

Like many other packages in this repository, monzo_ynab is packaged using Nix. To install and use, you have two options:

You can install using nix-build and then run the resulting ./result/bin/monzo_ynab.

> nix-build . && ./result/bin/monzo_ynab

Or you can install using nix-env if you'd like to create the monzo_ynab symlink.

> nix-env -f ~/briefcase/monzo_ynab -i

Deployment

While this project is currently not deployed, my plan is to host it on Google Cloud and run it as a Cloud Run application. What I don't yet know is whether or not this is feasible or a good idea. One complication that I foresee is that the OAuth 2.0 login flow requires a web browser until the access token and refresh tokens are acquired. I'm unsure how to workaround this at the moment.

For more information about the general packaging and deployment strategies I'm currently using, refer to the deployments writeup.