Skip to content

A payment management system acting as a gateway between banks. Process payments between registered banks, maintain user accounts, and enjoy currency-specific balances.

Notifications You must be signed in to change notification settings

muhammadahmed-01/Payment-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Payment Management System

Welcome to the Payment Management System repository! This Spring Boot application serves as a seamless gateway between banks, facilitating secure and efficient payment processing.

Best Industry Practices

This Payment Management System project adheres to the best industry practices, ensuring robustness, maintainability, and adherence to coding standards.

Key Features

  • 🌐 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 and admin for controlled access.

Implemented Features

✅ 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.

Clean Code

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.

REST APIs

Explore the user-friendly REST APIs provided by the Payment Management System for seamless payment management.

Banks

  • Create a new Bank

    • Endpoint: /api/banks
    • Method: POST
  • 📋 Get list of Banks

    • Endpoint: /api/banks
    • Method: GET

Accounts

  • Create an account (Sign up)

    • Endpoint: /api/accounts
    • Method: POST
  • 📋 Get list of accounts

    • Endpoint: /api/accounts
    • Method: GET
  • 🔍 Get details of an account

    • Endpoint: /api/accounts/{accountId}
    • Method: GET
  • ✏️ Update account information

    • Endpoint: /api/accounts/{accountId}
    • Method: PUT
  • 🗑️ Delete account

    • Endpoint: /api/accounts/{accountId}
    • Method: DELETE
  • 📜 Get payment history of an account

    • Endpoint: /api/accounts/{accountId}/payments
    • Method: GET

Balance

  • 💰 Get account balance
    • Endpoint: /api/accounts/{accountId}/balance
    • Method: GET

Payments

  • Create a payment between two registered accounts

    • Endpoint: /api/payments
    • Method: POST
  • 📋 Get all payments

    • Endpoint: /api/payments
    • Method: GET
  • 🔍 Get payment details of provided payment id

    • Endpoint: /api/payments/{paymentId}
    • Method: GET
  • 🔄 Get payment status of provided payment id

    • Endpoint: /api/payments/{paymentId}/status
    • Method: GET

Getting Started

Prerequisites

Make sure you have the following installed on your machine:

Installation

  1. Clone the repository:

    git clone https://github.com/DarkShadowFT/Payment-Management-System.git
  2. Navigate to the project folder:

    cd Payment-Management-System
  3. Build the project:

    mvn clean install
  4. Run the application:

    java -jar target/pms-1.0.0-SNAPSHOT.jar
  5. Access the application at http://localhost:8080

About

A payment management system acting as a gateway between banks. Process payments between registered banks, maintain user accounts, and enjoy currency-specific balances.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published