A 24/7 web service that allows users to manage their banking details.
The application provides REST APIs for users to: register, login, and manage their account details.
The resources are secured with JWT, Bearer Token, authentication.
The minimum requirements to run the application are:
Java 21
JDK 21
distro should work: Eclipse Temurin, OpenJDK, Oracle JDK..etcDocker engine
MySQL
in a container;Docker Desktop
is an easy way to get Docker on your OS;
IDE
, such as IntelliJ IDEA
, you may need to enableLombok
and MapStruct
.MySQL
database instance with an empty schema named account_registry
.The application can be built via gradle on your IDE.
Or you can build the application via the command line in terminal:
./gradlew clean build
This project uses GitHub Actions for CI/CD pipeline: gradle build.
The pipeline is triggered on every push to the master
branch.
The pipeline runs the following steps:
The project provides an easy to use dev
Spring profile:
application-dev.yml.
From that file, you can adjust the connection to a local MySQL database instance.
Or you may simply run a MySQL instance in a Docker container with the expected url configuration and credentials described in the file.
The application then can be run in two ways:
./gradlew bootRun --args='--spring.profiles.active=dev'
A postman collection is available in the project dev directory: AccountRegistry postman collection.
This collection can simply be imported into Postman and used to test the API features exposed by the application.
Unless specified, all the endpoints require authentication to access.
If the client is not authenticated the application may redirect the client to the login
page.
The application provides an OpenAPI documentation for better integration with other services.
Swagger UI
can be accessed via:
OpenAPI
yaml
can be downloaded via:
POST /accounts
0.00
and currency of client'sGET /login
formLogin
feature automatically provided by Spring Security;JWT
that allows them to access protectedPOST /login
JWT
is generated upon successfully authenticated client;JWT
;formLogin
feature;GET /accounts
JWT
for access;JWT
is provided, the client's banking details associated with the token areThe application provides the Spring Boot Actuator endpoints for monitoring and management.
GET /info
GET /health
GET /health/liveness
GET /health/readiness