A simple Bank Wallet REST API built with Spring Boot where users can own a wallet and perform basic money operations. It demonstrates clean layering (controller/service/repository), entity mapping with JPA, validation, and error handling.
Prerequisites:
- Java 25
- Maven 3.9+
From the project root folder:
mvn clean install
mvn spring-boot:runThe application will start on:
The H2 console is available at:
To connect to the DB, use JDBC URL: "jdbc:h2:mem:testdb" (or whatever you configured in the application.properties file)
- create a user, with a wallet (no auth required)
- find all users
- find a user by ID or email
- update user's name or email
- delete a user (only with ADMIN auth)
- find a wallet by walletID or userID
- deposit in a wallet
- withdraw from a wallet
- transfer between 2 wallets
- Java 25
- Maven 3.9 – build and dependency management
- Spring Boot – application framework and auto‑configuration
- Spring Web – RESTful HTTP endpoints
- Spring Data JPA / Hibernate – ORM and repository abstraction
- H2 Database (in‑memory) – relational database for development/testing
- Jakarta Validation / Hibernate Validator – request and DTO validation
- Lombok – boilerplate reduction (@Data, @Getter, @Setter, @AllArgsConstructor, @NoArgsConstructor, @Slf4j)
- Swagger/OpenAPI - documenting the REST endpoints
- exchangeratesapi (from https://docs.apilayer.com/) - currency exchange API for deposits