I am holding the 8 of hearts.

Note: the Monzo API doesn't appear to be working with newly generated oAuth clients at this time. :-( When it's working again, everyone should be able to use this by generating their own client ID and secret!

Inspiration

Online banking sucks. It's basically a paper statement shown on screen, as opposed to on a piece of dead tree. If someone has more than one bank account, they have to log in to many providers, which is a hassle. I built MyDough in order to fix this.

What it does

MyDough allows users to view their transactions based on SQL queries. This allows for a virtually unlimited number of views - so you could have one view for managing your expenses with your company, one view for reviewing spending on a recent family holiday, one view for day-to-day use, one view for monitoring how much is spent at the pub... etc.

How I built it

It's built using pretty much pure JavaScript. There's no back end - the client communicates directly with Monzo. This is great as it means users don't have to trust me or my infrastructure - the code is hosted on GitHub and available for all to see and audit.

Challenges I ran into

Discovering that Monzo's API wasn't properly granting new oAuth clients was a pain. When saving queries I needed to create a fourth kind of quote - I used a double backtick (``) which is converted to a normal quote just-in-time. I wanted to do a lot more, such as making a graphical interface for building queries, but I ran out of time.

Accomplishments that I'm proud of

The core product works! Users with a Monzo account can log in and view their transactions, rearrange them using SQL, and save views which they find helpful. I believe this is the first implementation on online banking for Monzo which does not rely on a backend or some other "black box" which has access to credentials.

What I learned

I learned that it's possible to implement a somewhat-performant SQL database in the browser. I also learned that everything can take a lot longer than planned, even if you think you're familiar with the API!

What's next for MyDough

Hopefully v0.2. This will probably use angular as opposed to multiple HTML pages, allow users to log in with multiple bank accounts and see all the data on one statement, and feature a graphical query builder, as well as getting rid of some of the nastiness that comes with a hack (e.g. synchronous HTTP requests, lack of caching).

Share this project:

Updates