.mvn/wrapper | ||
jdkDocker | ||
src | ||
.dockerignore | ||
.gitignore | ||
.gitlab-ci.yml | ||
apiE2ETest.sh | ||
docker-compose.example.yml | ||
Dockerfile | ||
entrypoint.sh | ||
mvnw | ||
mvnw.cmd | ||
pom.xml | ||
README.md |
Solatium
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