Giter Club home page Giter Club logo

spend's Introduction

spend

Spend is a personal finance tracker app intended to compete with services like Intuit Mint.

The goal is to be legible, high compatibility, cheap, and lightweight.

App

As it is based on flutter, the clientside application supports all platforms.

The app is very much so under construction. It was copied from EnergyInfoSwiss since their architecture is pretty similar to what we are aiming for. Most of what you see in the app is still EnergyInfoSwiss functionality, which will slowly be replaced.

Current app features:

  1. Auth using AWS Cognito
  2. Linking financial accounts using Plaid Link

API

Most of this service's functionality will be querying transactions in different ways. Spend exposes a GraphQL API to enable flexibility.

Features:

  1. Auth using AWS Cognito
  2. Linking financial accounts using Plaid Link
  3. Syncing transactions through Plaid
  4. Automatic and manual transaction categorization
  5. GraphQL API built with Hot Chocolate
  6. Plaid API exposed in GraphQL schema
  7. Database access through MongoDB

GraphQL schema can be pulled from https://iclhluo2w9.execute-api.us-east-1.amazonaws.com/api/graphql/sdl

DB

Everything is currently persisted in MongoDB using Atlas' serverless cluster, which is nearly free. Ideally nearly everything but the raw Plaid transaction would be stored in Postgres, but I don't want to pay for a dedicated server at the moment.

Infrastucture

All infrastructure is built using terraform modules. Ideally we would have ansible playbooks to augment terraform, but I'm trying to avoid premature over-automation.

We use S3 as a terraform backend.

Features:

  1. Auth using AWS Cognito
  2. VPC
  3. NAT gateway using fck-nat which is 10x cheaper than standard NAT gateway
  4. MongoDB Atlas serverless
  5. PrivateLink (VPC endpoint) connection to AWS
  6. GraphQL API deployed on lambda with API gateway

Contributing

See the contributing guide.

spend's People

Contributors

aokellermann avatar dependabot[bot] avatar paralock avatar

Watchers

 avatar  avatar

spend's Issues

API: Init graph on sign in

User pool lambda trigger to call idempotent graph mutation to init some stuff like default transaction categories.

We can add more stuff to init in the same mutation in the future to keep user data up to date.

Deploy Graph API

API is set up to theoretically be deloyed to a lambda.

Mongo private endpoint will need to be set up.

Add log in with Google

Cognito + Google IDP is already configured. Might just need to add button to app login screen.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.