Skip to content

A robust transaction processing microservice built with Spring Boot that handles all financial transactions for the FinTechPro platform. This service manages deposits, withdrawals, transfers, and maintains transaction history with real-time event processing.

Notifications You must be signed in to change notification settings

Fintech-LSI/Transaction-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💸 Transaction Service

Build Status Quality Gate Status Docker Pulls License: MIT

📋 Table of Contents

🎯 Overview

A robust transaction processing microservice built with Spring Boot that handles all financial transactions for the FinTechPro platform. This service manages deposits, withdrawals, transfers, and maintains transaction history with real-time event processing.

✨ Features

  • 💰 Multiple Transaction Types
    • Deposits
    • Withdrawals
    • Transfers
  • 📊 Transaction Status Tracking
  • 🔄 Real-time Processing
  • 📱 Wallet Integration
  • 📨 Notification Service
  • 📈 Transaction History
  • 🔍 Advanced Filtering
  • 📊 Status Monitoring
  • 🔐 Secure Processing
  • 📝 Audit Logging

🏗 Architecture

The service follows a microservices architecture with the following components:

                                 ┌─────────────┐
                            ┌──▶│Wallet Service│
┌──────────────┐    REST    │    └─────────────┘
│  Transaction │◀──────────▶│    ┌─────────────┐
│   Service    │    Kafka   └──▶│Notification  │
└──────────────┘  Messages      │   Service    │
                               └─────────────┘

🛠 Tech Stack

Spring Boot Java Kafka PostgreSQL Docker Kubernetes

📂 Project Structure

src/
├── 📱 main/java/com/lsi/transaction/
│   ├── 📊 config/
│   ├── 🎮 controller/
│   │   └── TransactionController.java
│   ├── 📦 dto/
│   │   ├── request/
│   │   └── response/
│   ├── 🏢 entity/
│   │   ├── Deposit.java
│   │   ├── MoneyMethods.java
│   │   ├── Transaction.java
│   │   ├── TransactionStatus.java
│   │   ├── Transfer.java
│   │   └── WithDraw.java
│   ├── 📚 repository/
│   ├── 🔧 service/
│   │   ├── TransactionService.java
│   │   ├── feign_clients/
│   │   └── kafka_service/
│   └── TransactionServiceApplication.java
├── 📝 main/resources/
│   ├── application.yaml
│   └── application-local.yaml
└── 🧪 test/

🔄 Pipeline

Our CI/CD pipeline ensures secure and reliable deployments:

CI/CD Pipeline

  1. 📥 Code Checkout: Source code retrieval
  2. 🔍 SonarQube Analysis: Code quality and security checks
  3. 🏗️ Maven Build: Compilation and package creation
  4. 🐳 Docker Build & Push: Container image creation and ECR upload
  5. ☸️ EKS Deployment: Kubernetes deployment with proper configurations

🚀 Getting Started

# Clone the repository
git clone https://github.com/your-org/transaction-service.git

# Navigate to the project directory
cd transaction-service

# Build the project
mvn clean install

# Run locally
mvn spring-boot:run -Dspring.profiles.active=local

# Run tests
mvn test

📚 API Documentation

Available endpoints:

GET /api/transaction              - Get all transactions
GET /api/transaction/type/{type}  - Get transactions by type (withdraw/deposit/transfer)
GET /api/transaction/wallet/{id}  - Get transactions by wallet ID
GET /api/transaction/status/failed    - Get failed transactions
GET /api/transaction/status/success   - Get successful transactions
GET /api/transaction/status/pending   - Get pending transactions

Detailed API documentation is available at /swagger-ui.html when running the service.

⚙️ Configuration

Key configuration parameters in application.yaml:

spring:
  application:
    name: transaction-service
  kafka:
    bootstrap-servers: ${KAFKA_SERVERS}
    consumer:
      group-id: transaction-group
  datasource:
    url: ${DB_URL}
    username: ${DB_USERNAME}
    password: ${DB_PASSWORD}

feign:
  wallet-service:
    url: ${WALLET_SERVICE_URL}

🚢 Deployment

The service is deployed on AWS EKS using Kubernetes manifests in the k8s/ directory:

  • configmap.yaml: Environment variables
  • secrets.yaml: Sensitive data
  • deployment.yaml: Pod specifications
  • service.yaml: Service configuration

👥 Team

Avatar Name Role GitHub
Zakariae Azarkan DevOps Engineer @zachary013
El Mahdi Id Lahcen Frontend Developer @goalaphx
Hodaifa Cloud Architect @hodaifa-ech
Khalil El Houssine Backend Developer @khalilh2002
Mohamed Amine BAHASSOU ML Engineer @Medamine-Bahassou

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


Built with ❤️ by the FinTech Team

About

A robust transaction processing microservice built with Spring Boot that handles all financial transactions for the FinTechPro platform. This service manages deposits, withdrawals, transfers, and maintains transaction history with real-time event processing.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •