fingo

module
v1.0.0-alpha Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 8, 2023 License: MIT

README ΒΆ

fingo πŸ¦πŸ’Έ

Build Status Go Report Card wakatime

GitHub issues GitHub pull requests

Run in Postman

fingo is a scalable, robust payment system that allows users to send money to each other. fingo users can issue accounts with more than one currency and many payments cards.

Currently, fingo supports 5 currencies: USD, EUR, GBP, EGP, RUB.

Table of Contents πŸ“‘

Tech Stack πŸ› 

fingo is built using scalable, reliable, robust and secure technologies which are listed below. πŸ”₯

Architecture πŸ—

Communication between all the microservices is done using grpc or message brokers to ensure that the system is scalable reliable and fault tolerant.

In fingo we have the following services, Where each one is responsible for a specific set of tasks, Click on each service to see its documentation and how it works.

  1. Auth (SignUp, SignIn, SignOut, Renewing tokens)
  2. Token (Validating access tokens)
  3. Wallet (Create wallets, accounts, cards and manage payments)
  4. Contact (Sending emails)

Each service is built using the Hexagonal Architecture pattern. This allows us to have a clean separation between the business logic and the infrastructure. This way we can easily swap the infrastructure without affecting the business logic.

All services trace their requests using OpenTelemetry and send them to Jaeger for monitoring and debugging besides Jaeger UI for visualization.

Components

Diagram

How to run βš™οΈ

Prerequisites
  1. Git
  2. Docker
  3. Docker Compose
Running the project

First clone the project

git clone github.com/escalopa/fingo && cd fingo
Docker Compose

Copy env vars, Env vars are used by docker to start the application

cp .env.example .env
cp .rabbitmq.env.example .rabbitmq.env
cp .db.env.example .db.env

Run the project

docker compose up

NOTICE: The contact service might not work as expected since it is missing crucial tokens which cannot be shared for public usage i.e. on the repo.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL