Welcome to the Payment Management System repository! This Spring Boot application serves as a seamless gateway between banks, facilitating secure and efficient payment processing.
This Payment Management System project adheres to the best industry practices, ensuring robustness, maintainability, and adherence to coding standards.
-
🌐 Swagger Specs: The application includes Swagger specifications for easy API exploration and testing.
-
🔄 Liquibase Scripts: Database changes are managed seamlessly with Liquibase scripts, ensuring efficient database version control.
-
🔐 Authorized Endpoints with Roles: The application incorporates authorized endpoints with two roles:
user
andadmin
for controlled access.
✅ Gained proficiency in Spring Boot and Liquibase.
✅ GitLab became my coding companion.
✅ Worked on Fedora OS.
✅ Leveled up my Swagger skills with practical application.
✅ Implemented clean code and SOLID principles.
✅ Utilized DTOs generated with openapi-swagger-maven-plugin.
✅ Implemented Spring Security with basic auth and cookies.
✅ Navigated through Spring Security 6, even without a guide!
✅ Achieved 100% test coverage with JPA, unit, and integration tests using JUnit and Mockito.
✅ Embraced code management with separate branches for each subtask.
The codebase is developed with a strong emphasis on clean code principles. Here are some highlights:
-
✨ Modularity: Code is organized into modular components, promoting readability and ease of maintenance.
-
🔄 Consistent Naming Conventions: Meaningful and consistent naming conventions enhance code comprehension.
-
🌐 SOLID Principles: The code follows SOLID principles to ensure scalability, maintainability, and flexibility.
-
🛠️ Code Quality: Regular code reviews and automated testing contribute to maintaining high code quality.
Explore the user-friendly REST APIs provided by the Payment Management System for seamless payment management.
-
➕ Create a new Bank
- Endpoint:
/api/banks
- Method:
POST
- Endpoint:
-
📋 Get list of Banks
- Endpoint:
/api/banks
- Method:
GET
- Endpoint:
-
➕ Create an account (Sign up)
- Endpoint:
/api/accounts
- Method:
POST
- Endpoint:
-
📋 Get list of accounts
- Endpoint:
/api/accounts
- Method:
GET
- Endpoint:
-
🔍 Get details of an account
- Endpoint:
/api/accounts/{accountId}
- Method:
GET
- Endpoint:
-
✏️ Update account information
- Endpoint:
/api/accounts/{accountId}
- Method:
PUT
- Endpoint:
-
🗑️ Delete account
- Endpoint:
/api/accounts/{accountId}
- Method:
DELETE
- Endpoint:
-
📜 Get payment history of an account
- Endpoint:
/api/accounts/{accountId}/payments
- Method:
GET
- Endpoint:
- 💰 Get account balance
- Endpoint:
/api/accounts/{accountId}/balance
- Method:
GET
- Endpoint:
-
➕ Create a payment between two registered accounts
- Endpoint:
/api/payments
- Method:
POST
- Endpoint:
-
📋 Get all payments
- Endpoint:
/api/payments
- Method:
GET
- Endpoint:
-
🔍 Get payment details of provided payment id
- Endpoint:
/api/payments/{paymentId}
- Method:
GET
- Endpoint:
-
🔄 Get payment status of provided payment id
- Endpoint:
/api/payments/{paymentId}/status
- Method:
GET
- Endpoint:
Make sure you have the following installed on your machine:
-
Clone the repository:
git clone https://github.com/DarkShadowFT/Payment-Management-System.git
-
Navigate to the project folder:
cd Payment-Management-System
-
Build the project:
mvn clean install
-
Run the application:
java -jar target/pms-1.0.0-SNAPSHOT.jar
-
Access the application at http://localhost:8080