ExBanking is a gateway to process transaction among users independently one from another. You can see the specification and API at Requirements.md.
For every user created, there is a par of GenStage
with a producer and a consumer. This lets every user to handle transactions independently. You can see more about this at ExBanking.User
and ExBanking.UserConsumer
.
Inside the system the concept of ExBanking.Transaction
exists. This is how the system speaks internaly, validating constraints that does not depend of the state. For example: Money amount of any currency should not be negative.
The information of the users is stored on a ExBanking.User.Vault
:ets
table. It is being protected from crashing by having an heir
available at all times with the help of the Element
library.
Money is handled as integers internally. Being formated on at input and output moments. See more on ExBanking.Format
.
You can run the tests with mix test
Documentation can be generated with ExDoc