You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Dwenger 47c3cb39d1 Merge branch 'master' into dev 2 years ago
.mvn/wrapper add mvn wrapper 2 years ago
jdkDocker remove local java var 2 years ago
src Merge branch 'feature/website_redesign' into 'dev' 2 years ago
.dockerignore add docker image to be automatically build and pushed with the ci 2 years ago
.gitignore add ignore to the directory for the persistence block save 2 years ago
.gitlab-ci.yml fix packaging for master and tags 2 years ago
Dockerfile add docker image to be automatically build and pushed with the ci 2 years ago setup for release 2 years ago add param to skip maven test on startup 2 years ago
docker-compose.example.yml setup for release 2 years ago change directory to run app in path 2 years ago
mvnw add mvn wrapper 2 years ago
mvnw.cmd add mvn wrapper 2 years ago
pom.xml use maven wrapper for building docker image and change jacoco merge directory 2 years ago


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.


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


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
To start the application run docker run --name solatium -p 8080:8080
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.


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