Skip to content

Nokocchi/Alph-Bank

Repository files navigation

Alph Bank (Draft, goals)

A personal project to create a bank, including the following features and more:

  • Core banking functionality
  • Transaction history
  • Payments to and from other customers using PSD2 inspired API (Payment baskets)
  • Scheduled payments
  • Recurring payments
  • Simulated compliance-based nightly batch uploads to government entities
  • Personal Loan applications with fixed-rate interest
  • Simulated signing flow for authorizing payments and applying for loans, utilizing asynchronous callbacks when customer has signed
  • Simulated credit worthiness checks for loan applications
  • Simulated AML and fraud checks for payments and loan applications, triggering reports to government entities
  • Know Your Customer (KYC)
  • Admin interface for manually processing and approving suspicious payments and loan applications
  • Supports multiple languages, countries and currencies

Architecture:

  • Backend written in Java, using Spring Webflux
  • Reactive microservice architecture
  • Client-facing REST-like API (No HATEOAS :) )
  • Frontend written in SvelteKit and Typescript
  • Well-documented OpenAPI based API
  • Largely asynchronous, using scheduled tasks and message queues
  • Spring boot starters for common behavior
  • Elasticsearch as a central location for logs generated by all services
  • Integration tests with simulated external endpoints

What is not included:

  • Proper authentication and authorization
  • No proper deployment that can be tested. Local testing only
  • Mostly intended to show backend skills and banking knowledge, so the front-end is quite barebones and does not use or provide good accessibility, best practices, nice user experiences across devices and browsers etc.

Component diagram in the loan flow

overall-component-diagram-loan

Component diagram in the payment flow

overall-component-diagram-payment

How to run

This is a microservice based project, so each microservice is a gradle project that can be launched independently. All the postgres databases, Postgres admin, RabbitMQ broker, RabbitMQ admin etc. can be launched by the docker-compose.yaml file

Overall architecture explanation

Core services basically trust anything - keeps the banking core clean and focuses on internal business logic. Assumes that things have already been signed, approved, decided, etc. Core services not reachable from frontend

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published