- Overview
- Features
- Architecture
- Tech Stack
- Project Structure
- Pipeline
- Getting Started
- API Documentation
- Configuration
- Deployment
- Contributing
- Team
- License
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.
- 💰 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
The service follows a microservices architecture with the following components:
┌─────────────┐
┌──▶│Wallet Service│
┌──────────────┐ REST │ └─────────────┘
│ Transaction │◀──────────▶│ ┌─────────────┐
│ Service │ Kafka └──▶│Notification │
└──────────────┘ Messages │ Service │
└─────────────┘
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/
Our CI/CD pipeline ensures secure and reliable deployments:
- 📥 Code Checkout: Source code retrieval
- 🔍 SonarQube Analysis: Code quality and security checks
- 🏗️ Maven Build: Compilation and package creation
- 🐳 Docker Build & Push: Container image creation and ECR upload
- ☸️ EKS Deployment: Kubernetes deployment with proper configurations
# 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 testAvailable 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.
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}The service is deployed on AWS EKS using Kubernetes manifests in the k8s/ directory:
configmap.yaml: Environment variablessecrets.yaml: Sensitive datadeployment.yaml: Pod specificationsservice.yaml: Service configuration
| 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 |
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ by the FinTech Team





