/NEo-Bank

The Web server is deployed. The client is yet to be deployed.

Primary LanguageJavaScript

Contributors Ayush Anuj Prakhar Sanket

Forks Stargazers Issues


Logo

RBH BANK by Code-O-Holics

An awesome Online banking web app made by students of punjab engineering college!
Explore the docs »

API URL · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

RBH Bank is a digital bank built using Node.js, MongoDB, and Express. This application implements a user-service, account-service, and transaction-service to provide a complete banking experience.

Server Demo pic

Here are some of the key features of the Web App:

  • Very user friendly User interface.
  • Very robust and fast apis.
  • Extremely safe and everything is secure.
  • Whole server is tested using different testcases and if found any bugs then it does not affects other features. Of course, there are still a lot of issues to be tackled and new features to be added and we are slowly but surely working on it.

(back to top)

Built With

This web app is divided into frontend (client) and backend (server or apis).

Frontend Tech used

  • React
  • React
  • Vue
  • Angular
  • Svelte
  • Laravel
  • Bootstrap
  • JQuery

Backend Tech used

  • Express.js
  • Node
  • Morgan
  • MongoDB
  • JWT
  • JOI
  • Jest
  • B-crypt
  • Vercel

(back to top)

Getting Started

To run this project locally you have the prerequisites and once you are done with that follow the instructions of the frontend and the backend.

Prerequisites

Node 14.0.0 or higher MongoDB account Postman or any other software simiiar to it

Installation

Frontend

Below is an example of how you can instruct your audience on installing and setting up your app. This template doesn't rely on any external dependencies or services.

  1. Get a free API Key at https://example.com
  2. Clone the repo
    git clone https://github.com/your_username_/Project-Name.git
  3. Install NPM packages
    npm install
  4. Enter your API in config.js
    const API_KEY = 'ENTER YOUR API';

Backend

  1. fork the repo
  2. clone the forked version of the repo
    git clone https://github.com/your_username_/Project-Name.git
  3. Install Node packages
    npm install
  4. Creating .env file
     cp .env.sample .env
    
  5. make sure you have fill all the env variables like mongodb url, secret key and node env.:
  6. make sure you have nodemon installed if not then just use node main.js from root else use:
     nodemon index.js
    
  7. To run the test use
     npm test
    

(back to top)

Usage

The backend is created on Express. It has 3 features for now.

  1. New Account creation.
  2. Account Validation and other basic user services.
  3. Transactional services (NEFT type of tranfer technique).
  • The transactional services includes normal banking transactions between users, Account balance, Account validation, New account creation etc.

Description

This API is for creating a simple banking application developed in Node JS and secured by JWT token.

  • It includes three independent services
    1. User-Service
    2. Account-Service
    3. Transaction-Service
  • The User-Service takes care of handling user related information.
  • The Account-Service takes care of handling account related information.
  • The User-Service takes care of handling user related information.
  • The Transaction-Service takes care of handling transaction related information.
  • We will be adding the low level designs of this seperately very soon.

User Service

The user-service allows users to register with RBH Bank and provides a validate function for login. The service also includes several GET and UPDATE requests. During login, a JSON Web Token (JWT) is generated and used as a header for the account-service.

Account Service

The account-service allows users to create a new account and includes functions such as createnewaccount, getaccountdetailsbyusername, getaccountdetails, addpayee, getpayees, and transferamount. The addpayee function is used to add a beneficiary for making payments. The username is used as a foreign key in the user table and the JWT token is used for security.

Transaction Service

The transaction-service includes two functions: trans summary and log summary. Trans summary provides a transaction summary with remarks after the transaction.

Folder structuring

The main file for the server is at the root named by index.js. There you can find the express server. Then there are various folders. Each of them quite different from other and you can find the details of it in the documentation.

  • Controllers -> it included the router and the breakpoints of the rest apis.
  • lib -> it contains some of the functions which have been used again and again in various places.
  • .vercel -> it inclued the files necessary for the deployment.
  • logger -> it includes the logger (what should be logged in the console what should'nt).
  • Middlewares -> simple middleware for jwt setup.
  • models -> it contains the schemas for different tables of the database.
  • validator -> it includes the validator files which validates the schema coming from the client.
  • Dao -> It includes all the data access operations (the functions which are related to database manipulation).

For more examples, please refer to the Documentation

(back to top)

Roadmap

Account User Transaction

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated. If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

Presentation

Canva

Workflow

8e339dba-d2fb-4c97-a86f-2f8b75431c90 45fa6332-e37d-4f36-b602-5efaf56985fc

More Coming Soon ...

(back to top)

Contact

AyushLinkedInGmail

AnujLinkedInGmail

SanketLinkedInGmail

PrakharLinkedInGmail

Project-LinkGithub

(back to top)

Documetation

Coming Soon...

(back to top)