Giter Club home page Giter Club logo

autobank's Introduction

Autobank by Omar Chehab

Build Status Standard code style License

  • automatically logs expenses by monitoring mail
  • provides weekly and monthly cash flow of expenses and income
  • authentication using a secret key (uses Storage API to store token locally)

Screenshot 1 Screenshot 2 Screenshot 3

Installation

Node

git clone https://github.com/omarchehab98/autobank
cd eun
npm install

# development
# run both in seperate terminals
npm run dev-client
npm run dev-server

# production
npm run build
npm start

Docker

git clone https://github.com/omarchehab98/autobank
cd eun
docker-compose up

Development

Prerequisites

If you are planning to develop a feature or fix a bug, you should be familiar with the stack.

Hot Reloading

  • npm run dev-client Watches the client directory, keeps browser in sync with new changes.

  • npm run dev-server Watches the server directory, restarts server when changes are made.

When submitting a merge request, it must pass all three commands below.

npm run build
npm run lint
npm test

License

MIT ยฉ Omar Chehab

autobank's People

Contributors

omarchehab98 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

autobank's Issues

Detect inter-account transfers

When a user has multiple accounts and the user transfers money from one account to another, the bar graphs and piecharts get skewed because the software doesn't know it's an inter-account transfer
so it shows them as expenses and incomes.

Modify the software so that inter-account transfers are automatically detected. So, expense and income documents will be tagged as an one.

On the frontend, the pie-charts and bar-graphs should not graph inter-account transfers.

Maintaining an array's sort by timestamp after editing a card's timestamp

When an expense is edited, the expenses array needs to maintain it's sort by timestamp descending.

Currently, I approach this issue in a very naive way by calling .sort(byTimestamp) ExpensesPage.js#L53.

Terrible efficiency aside, Javascript's Array.prototype.sort is

not necessarily stable

(Source)

Optimally, this issue can be resolved by not involving sorting at all.

When a card A's timestamp is modified, slice it out of the array and insert in between two adjacent elements B and C where A.timestamp <= B.timestamp and A.timestamp >= C.timestamp

Automatic expense tracking through email monitoring, add a filter for your bank's email notifications

Does your bank send email notifications of transactions? I bank with Royal Bank of Canada (RBC), I enabled email notifications for every transaction.

Email notification send by RBC

I wrote four filters (src/server/mail/filters/rbc.js) that parse the different emails that RBC can send.

Classification of emails is achieved through a functional filtering API (docs/filter.md), using the field set filter (docs/filters/fieldset.md).

An example of the filter that detects RBC's emails is documented in (docs/filters/rbc.md).

Write a filter that classifies your bank's email notifications.

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.