solatium/README.md

3.0 KiB

Solatium

pipeline status coverage report

Solatium is a program that simulates an ATM. The users can login into their accounts and check their balance, send transactions and disburse and deposit their money.

Features

  • Login with Verification
  • Persistent Account Balance
  • Deposit & disburse
  • All in a Blockchain (with validation)

Setup

Download one of the newest builds and run it with java -jar filename.jar

Setup with Docker

This project can be executed with Docker. To do so pull the image from registry.gitlab.com/berufsschul-ae/solatium:latest.
To start the application run docker run --name solatium -p 8080:8080 registry.gitlab.com/berufsschul-ae/solatium:latest.
To persist the transactions you have to mount a volume to /tmp/persistence.
There is also a docker-compose file with all the config done, just start it with docker-compose -f docker-compose.example.yml up and take a look at localhost.

How to use

Go to the root of you server it will ask you for a login Currently there are only the following hardcoded users:
"user" with password "foo"
"user1" with password "bar"
"blazej" with password "blazej123"
"augusto" with password "augusto123"
"bjarne" with password "bjarne123"
"Bank" with password "Bank"
"heiko" with password "heiko123"

After a successful login you can see your balance. You can also send the transaction and disburse and deposit your money.

API

You can also use the included API to check for the balance of a user or send transaction etc.

The API has the following schema: /api/(action)?(params)

You still need to be authorized to access this API. We suggest using curl for this. Here are the request made with curl and some explanations.

Checking the balance

curl -u user:foo localhost:8080/api/balance
If you'd run the code locally, your curl request could look like this.
This request uses the balance action to the balance for the user specified after the curl parameter "-u". After the parameter we need to provide the user credentials with the following schema "(username):(password)".

Sending transactions

curl -u user:foo "localhost:8080/api/transaction?receiverId=user1&amount=100"
This request requires an receiverId and the amount as parameters. Here we are sending a transaction from user to user1 with an amount of 100.

Depositing money

curl -u user:foo localhost:8080/api/deposit?amount=100 Deposit only takes one parameter and that's amount.

Disburse money

curl -u user:foo localhost:8080/api/disburse?amount=100 Disburse also only takes one parameters; amount.

Setup for development

Clone the project and do a mvn clean install
Run the project with mvn spring-boot:run