Code Monkey home page Code Monkey logo

bank's Introduction

Bank logo

Banking infrastructure built using Go

Core banking in Golang

Join the chat at https://gitter.im/ksred/bank

Overview

Bank is an answer to the question “What would banking infrastructure look like if it were built today?”

The financial industry is well known for using outdated technology, some still relying on systems from the 1970s written using languages like COBOL. This project aims to bring that infrastructure through to current technological levels.

A secondary aim of this project is to lift the curtain on the financial industry. This is one of the most closed off industries, and finding out how it works has proven to be very difficult. As more is discovered, the possibilities open up. Bringing light to this industry will surely help other fintech developers and upstarts.

This project’s development is documented.

Standards (WIP)

Functionality (WIP)

  • Payments
  • Securities
  • Trade Services
  • FX
  • Cards

Installation

Coming soon: There will soon be a public facing instance of this server to build and test against.

This project is built using Go 1.6, but may work against older versions.

Software Dependencies:

  • MySQL
  • Redis

In order to develop against this project, clone it using git clone https://github.com/ksred/bank.git. Make sure you have all dependencies the project uses:

  • go get github.com/go-sql-driver/mysql
  • go get github.com/satori/go.uuid
  • go get gopkg.in/redis.v3
  • go get github.com/gorilla/mux

You can then go build.

Install certs

Either create your own self-signed certs, or purchase them, and place them in the certs/ directory. There is a script generateCerts.sh to assist with this. These certs must keep the same naming convention:

  • server.key
  • server.pem
  • client.key
  • client.pem

Running the HTTP API

Once built, you can run the HTTP API:

  • Secure: ./bank http
  • Insecure: There is no insecure mode implemented

The API will then be available at the FQDN and port specified.

Running the CLI server

You can run the CLI server:

  • Secure: ./bank server
  • Insecure: ./bank serverNoTLS

Running the CLI client

The program comes with a CLI client. A TLS client can only connect to a TLS server, so the modes must match. The server accepts commands from the CLI separated by new lines. A detailed explanation will be placed in the wiki.

You can run the client:

  • Secure: ./bank client
  • Insecure: ./bank clientNoTLS

Example flow

The following illustrates an example flow for using the server through the CLI client.

Create account

0~acmt~1~Kyle~Redelinghuys~19700101~197001011234098~55512340987~~email@domain.com~Physical Address 1~~~1000

This call responds with the user_id:

1~52d27bde-9418-4a5d-8528-3fb32e1a5d69

Create account login

0~appauth~3~52d27bde-9418-4a5d-8528-3fb32e1a5d69~TestPassword

Log into account

0~appauth~2~52d27bde-9418-4a5d-8528-3fb32e1a5d69~TestPassword

This responds with a token:

1~cb485f9d-0a24-4385-a358-61ea0d44fdea

This token is valid for 60 minutes by default.

Make a payment, here the payment amount is 20

cb485f9d-0a24-4385-a358-61ea0d44fdea~pain~1~52d27bde-9418-4a5d-8528-3fb32e1a5d69@~137232cc-142e-474c-aaaa-43393f9b7c4c@~20

A full wiki and documentation will be added.

License

Q Public License 1.0 (QPL-1.0)

Copyright Kyle Redelinghuys

bank's People

Contributors

gitter-badger avatar ksred avatar n1c avatar

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.