Portuguese version: LEIAME.md
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.
- Users Management
- Wallet 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.
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
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.