This project demonstrates a native application built with GraalVM, Spring Boot 3, and React for currency exchange and transfer functionalities.
Executables:
- Download pre-built executables from here.
Deployed version:
- Access the application from a web browser at the provided server URL.
- Front-end: http://localhost:8080/
- Business Documentation (AsciiDoc):
- REST API Documentation (Swagger UI): http://localhost:8080/swagger-ui
- DB web console: http://localhost:8080/h2-console (jdbc:h2:mem:testdb user: spaceFan pwd: spaceFan)
- Monitoring endpoints: http://localhost:8080/actuator/health
Back-end:
- Spring Boot 3 native (Java) web framework producing native application bytecode with GraalVM support for potential AOT compilation and native image generation.
- Flyway + Spring Data JPA + H2 for database migration and access
- Asciidoctor and Swagger for documentation
- MapStruct, Jackson, and Lombok for back-end data binding
- Actuator for monitoring
- Moneta JSR 354 for currency exchange base en ECB european central bank
Front-end:
- React: Popular JavaScript library for building dynamic and user-friendly interfaces.
GraalVM:
- Optional: GraalVM can be used for AOT compilation and native image generation of the Spring Boot application, potentially improving performance and startup time.
# Build back-end
mvn clean install
# Build back-end and front-end
mvn clean install -Pprod
# Build front-end and run both
./mvnw spring-boot:run -Pprod
Requirements:
- Windows: Install GraalVM JDK from https://www.graalvm.org/latest/docs/getting-started/.
- Linux: Install Java 22.3.r17-nik using SDKMAN: https://sdkman.io/
Instructions:
-
After changes:
mvn clean package -Pprod -Pnative -Dmaven.test.skip=true
-
Compile the native image:
mvn -Pprod -Pnative native:compile -Dmaven.test.skip=true
- requirements docker installed
mvn clean package -Pprod -Pnative -Dmaven.test.skip=true
mvn -Pprod -Pnative spring-boot:build-image -Dmaven.test.skip=true
Required dependencies for raspberry 4 native compilation:
- apt-get install libz-dev
- apt update && sudo apt upgrade
- apt-get install libfreetype-dev