Skip to content
No description, website, or topics provided.
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.


Authors: Cesar Barata and Kleber Stender

Portuguese version:

Microservice project for personal wallet

This project creation is meant for learning purposes and documentation to be used as a portfolio so you can hire us =D.

MVP Features

  • Users Management
  • Wallet Management
    • Withdrawal
    • Deposit

Requirement details

Users Management

Simple user management for logging in and authentication. A user will be able to create as many wallets as they wish but the wallet can only have one and only one owner.

Wallet Management (withdrawal and deposit)

Each wallet will be treated separately with the possibility of making transfers between them when there is 'credit' in the source one. Wallets will have an ID and a unique name, where the ID will identify it in the application and the name will be used for users to easier identify each one since they will be able to receive deposits from other users but will only be able to withdraw from their own wallets.

Technical specifications

The project will be structured as a collection of isolated Docker microservices that are orchestrated by Docker Compose. The available microservices are:

  • Web front-end
  • User database
  • Wallet database
  • User management back-end service
  • Wallet management back-end service
  • REST service acting analogous to how the Facade pattern works
  • Apache Kafka

User management

The user management service will be implemented in Scala with standard Apache Kafka library for producing and consuming requests/responses to/from other services.

The user database will be implemented in a MongoDB instance that will be accessed through its Scala driver.

Post MVP ideas

  • Make it possible for the wallet to be created in a blockchain with the intention of using it's structure to make actions more reliable and transparent.
  • Implement a payment system similar to Blik.
You can’t perform that action at this time.