The application simulates the usage of an ATM via REST API calls. It aims to provide the user with bank operations and to keep a record of customer transactions in a database.
The ATM offers three sets of operatons:
-
Authentication
-
Register
-
Login
-
-
User
-
Deposit
-
Withdraw
-
Transfer (to another bank user)
-
Bank account details
-
Bank statement for a certain date
-
Close bank account
-
-
Bank
-
Bank users
-
Transactions
-
Accounts
-
Bank balance
-
Show user with most transactions
-
Show user with highest balance
-
Transactions occured between two given dates
-
Find the date with most transactions
-
Observation: In order for the application flow to run correctly, register the users first.
Build the project following the ./gradlew build command.
You can run the application (a REST server) in your IDE by running class AtmApplication as Java Application or on the command line gradle wrapper run.
The documentation for each ATM endpoint was done via Swagger springdoc-openapi and it can be found after running the application at the following
url http://localhost:8080/swagger-ui.html
-
Java 17
-
Spring Boot (3.0.1)
-
Hibernate
-
Spring Data JPA
-
Lombok
-
Unit test: Junit 5 + Mockito
-
Documentation: Swagger springdoc-openapi
-
Endpoints testing: Postman
-
Build Tool: Gradle
-
Database: PostgreSql
-
IDE: IntelliJ