Skip to content

saidulIslam1602/BNPL-Checkout-Debt-Management-Platform

Repository files navigation

BNPL Checkout & Debt Management Platform (Riverty)

A production-ready, enterprise-grade Buy Now Pay Later (BNPL) platform built with modern microservices architecture. This comprehensive solution provides payment processing, credit risk assessment, fraud detection, settlement management, and multi-channel notifications specifically designed for the Norwegian market.

Overview

This platform delivers a complete BNPL ecosystem with advanced features for merchants, consumers, and administrators. Built with scalability, security, and compliance in mind.

Core Services

  • Payment API: Multi-gateway payment processing (Stripe, Adyen, Nets, Vipps) with tokenization, idempotency, and webhook management
  • Risk API: ML-powered credit risk assessment and fraud detection with Norwegian credit bureau integration (Experian, Bisnode, Lindorff)
  • Settlement API: Automated merchant settlement processing with batch operations and multi-currency support
  • Notification API: Multi-channel notifications (Email via SendGrid, SMS via Twilio, Push via Firebase) with templating and scheduling
  • Real-time API: WebSocket-based event streaming with Socket.IO for real-time updates

Architecture Highlights

  • Backend: .NET 8.0 microservices with CQRS pattern using MediatR
  • Real-time Service: Node.js 18+ with Socket.IO for WebSocket communication
  • Frontend: Angular 17 (Consumer/Merchant), Vue.js 3 (Admin), Knockout.js (Legacy)
  • Background Jobs: Azure Functions v4 (Payment Processor, Payment Collection, Notification Scheduler)
  • API Gateway: Ocelot for unified API routing and rate limiting
  • Observability: Prometheus + Grafana for metrics, ELK stack for logging

Technology Stack

Backend Services (.NET 8.0)

Component Technology Purpose
Framework .NET 8.0 Primary API framework with minimal APIs and async/await
ORM Entity Framework Core 8 Database operations with migrations
CQRS MediatR 12 Command/Query separation pattern
Validation FluentValidation 11 Modern input validation (AddValidatorsFromAssemblyContaining)
Mapping AutoMapper 12 DTO to entity mapping
Logging Serilog 3.1 Structured logging to console, file, and Elasticsearch
API Docs Swashbuckle/Swagger Interactive API documentation
Resilience Polly 8 Circuit breaker, retry, timeout policies

Frontend Applications

Portal Framework Port Purpose
Consumer Portal Angular 17 4201 Customer-facing BNPL checkout and account management
Merchant Portal Angular 17 4202 Business dashboard with real-time analytics
Admin Portal Vue.js 3 + Vite 4200 Internal operations and system management
Legacy Portal Knockout.js 4203 Backward compatibility for existing integrations

Real-time & Background Services

  • Real-time API: Node.js 18+ with Socket.IO for WebSocket connections
  • Azure Functions v4: Serverless background processing
    • Payment Processor (Port 7071): Payment gateway processing and reconciliation
    • Payment Collection (Port 7072): Installment collection and dunning
    • Notification Scheduler (Port 7073): Scheduled notification dispatch

Databases & Storage

  • SQL Server 2022: Transactional databases (separate per service)
    • YourCompanyBNPL_Payment
    • YourCompanyBNPL_Risk
    • YourCompanyBNPL_Settlement
    • YourCompanyBNPL_Notification
  • MongoDB 7: Event sourcing and audit logs
  • Redis 7: Caching, rate limiting, and distributed locking

DevOps & Infrastructure

  • Containerization: Docker 24+ with multi-stage builds
  • Orchestration: Docker Compose (dev), Kubernetes (production)
  • Cloud: Azure (AKS, Azure SQL, Azure Functions, Azure Service Bus)
  • IaC: Terraform for Azure resource provisioning
  • Reverse Proxy: Nginx for load balancing

Observability Stack

  • Metrics: Prometheus + Grafana with custom dashboards
  • Logs: Elasticsearch + Kibana (ELK stack)
  • Traces: Application Insights (Azure)
  • Health Checks: Built-in ASP.NET Core health checks on /health endpoints

⚡ Quick Start

Prerequisites

🚀 5-Minute Setup

# 1. Clone the repository
git clone https://github.com/saidulIslam1602/BNPL-Checkout-Debt-Management-Platform.git
cd BNPL-Checkout-Debt-Management-Platform

# 2. Start infrastructure (databases, Redis, monitoring)
docker-compose up -d sqlserver redis mongodb elasticsearch prometheus grafana

# 3. Wait for databases to initialize (30 seconds)
sleep 30

# 4. Build the entire solution
dotnet restore MerchantBNPL.sln
dotnet build MerchantBNPL.sln --configuration Release

# 5. Start all services via Docker Compose
docker-compose up -d

# 6. Verify services are running
curl http://localhost:7000/health  # API Gateway
curl http://localhost:5001/health  # Payment API
curl http://localhost:5002/health  # Risk API
curl http://localhost:5003/health  # Settlement API
curl http://localhost:5004/health  # Notification API

🌐 Access Points

Service URL Credentials Description
API Gateway http://localhost:7000 JWT Token Central API endpoint for all services
Payment API Swagger http://localhost:5001/swagger - Payment processing API docs
Risk API Swagger http://localhost:5002/swagger - Risk assessment API docs
Settlement API Swagger http://localhost:5003/swagger - Settlement management API docs
Notification API Swagger http://localhost:5004/swagger - Notification service API docs
Admin Portal http://localhost:4200 admin@riverty.com Vue.js admin dashboard
Consumer Portal http://localhost:4201 - Angular consumer app
Merchant Portal http://localhost:4202 merchant@demo.com Angular merchant dashboard
Grafana http://localhost:3001 admin / admin Metrics & dashboards
Kibana http://localhost:5601 - Log analysis
Prometheus http://localhost:9090 - Metrics collection

Note: For detailed setup instructions, see QUICK_START.md

Project Structure

BNPL-Checkout-Debt-Management-Platform/
├── Configuration Files
│   ├── MerchantBNPL.sln                    # Main solution file (14 projects)
│   ├── docker-compose.yml                   # Container orchestration
│   ├── appsettings.template.json            # Configuration template
│   └── package.json                         # Root npm scripts
│
├── database/
│   └── init/
│       └── 01-create-databases.sql          # Initializes 4 service databases
│
├── docs/
│   ├── API_DOCUMENTATION.md                 # Complete API reference
│   └── DEPLOYMENT_GUIDE.md                  # Production deployment guide
│
├── ☁️ infrastructure/
│   └── terraform/                           # Azure infrastructure as code
│       ├── main.tf                          # Main Terraform config
│       ├── variables.tf                     # Variable definitions
│       ├── outputs.tf                       # Output values
│       └── terraform.tfvars.example         # Example variables
│
├── k8s/                                     # Kubernetes deployment manifests
│   ├── namespace.yaml                       # bnpl-platform namespace
│   ├── configmap.yaml                       # Configuration maps
│   ├── secrets.yaml                         # Secrets template
│   ├── ingress.yaml                         # Ingress routing
│   └── payment-api-deployment.yaml          # Service deployments
│
├── monitoring/
│   ├── prometheus.yml                       # Metrics collection config
│   └── grafana/
│       ├── dashboards/
│       │   └── bnpl-overview.json           # Main dashboard
│       └── datasources/
│           └── prometheus.yml               # Prometheus datasource
│
├── scripts/
│   ├── build.sh                             # Build automation
│   ├── deploy-functions.sh                  # Azure Functions deployment
│   └── start-application.sh                 # Quick start script
│
├── src/
│   ├── Functions/                           # Azure Functions (Serverless)
│   │   ├── NotificationScheduler/           # Port 7073 - Scheduled notifications
│   │   ├── PaymentCollection/               # Port 7072 - Installment collection
│   │   └── PaymentProcessor/                # Port 7071 - Payment processing
│   │
│   ├── Gateway/
│   │   └── API.Gateway/                     # Port 7000 - Ocelot API Gateway
│   │       ├── ocelot.json                  # Route configuration
│   │       └── Program.cs                   # Gateway startup
│   │
│   ├── Services/                            # Core Microservices
│   │   ├── Payment.API/                     # Port 5001 - Payment processing
│   │   │   ├── Controllers/                 # REST API endpoints
│   │   │   ├── Services/                    # Business logic
│   │   │   ├── Data/                        # EF Core DbContext
│   │   │   ├── DTOs/                        # Data transfer objects
│   │   │   └── Mappings/                    # AutoMapper profiles
│   │   │
│   │   ├── Risk.API/                        # Port 5002 - Risk assessment
│   │   │   ├── Controllers/                 # Risk & fraud endpoints
│   │   │   ├── Services/                    # ML models, credit bureau
│   │   │   ├── Infrastructure/              # Circuit breakers, caching
│   │   │   └── README.md                    # Risk API documentation
│   │   │
│   │   ├── Settlement.API/                  # Port 5003 - Settlement processing
│   │   │   ├── Controllers/                 # Settlement endpoints
│   │   │   ├── Services/                    # Batch processing
│   │   │   └── Data/                        # Settlement database
│   │   │
│   │   ├── Notification.API/                # Port 5004 - Notifications
│   │   │   ├── Controllers/                 # Notification endpoints
│   │   │   ├── Providers/                   # Email, SMS, Push providers
│   │   │   ├── Templates/                   # Notification templates
│   │   │   ├── Services/                    # Template engine, queue
│   │   │   └── README.md                    # Notification API docs
│   │   │
│   │   └── RealTime.Node.API/               # Port 3000 - WebSocket server
│   │       ├── server.js                    # Socket.IO server
│   │       └── package.json                 # Node.js dependencies
│   │
│   ├── Shared/                              # Shared Libraries
│   │   ├── Common/                          # Common utilities & enums
│   │   ├── Events/                          # Event definitions
│   │   └── Infrastructure/                  # Shared infrastructure
│   │
│   └── Web/                                 # Frontend Applications
│       ├── AdminPortal/                     # Port 4200 - Vue.js 3 + Vite
│       │   ├── src/                         # Vue components
│       │   └── vite.config.js               # Vite configuration
│       │
│       ├── MerchantPortal/                  # Port 4202 - Angular 17
│       │   ├── src/app/                     # Angular app
│       │   └── README.md                    # Merchant portal docs
│       │
│       ├── ConsumerPortal/                  # Port 4201 - Angular 17
│       │   └── src/app/                     # Consumer app
│       │
│       └── LegacyPortal/                    # Port 4203 - Knockout.js
│           └── Scripts/                     # Legacy JavaScript
│
└── tests/
    ├── Integration/
    │   └── Integration.Tests/               # End-to-end API tests
    └── Unit/
        ├── Payment.API.Tests/               # Payment service tests
        └── Risk.API.Tests/                  # Risk service tests

Key Points:

  • 14 Projects in solution (5 APIs + 3 Azure Functions + 1 Gateway + 3 Shared + 2 Test projects)
  • 4 Databases (one per backend service: Payment, Risk, Settlement, Notification)
  • 4 Frontend Apps (Admin, Merchant, Consumer, Legacy)
  • Production Ready with comprehensive monitoring, logging, and deployment automation

Development Workflows

Building the Solution

# Build entire solution (14 projects)
dotnet build MerchantBNPL.sln --configuration Release

# Build specific service
cd src/Services/Payment.API
dotnet build --configuration Release

# Clean build artifacts
dotnet clean MerchantBNPL.sln
rm -rf **/bin **/obj

# Run unit tests
dotnet test tests/Unit/ --logger "console;verbosity=detailed"

# Run integration tests (requires running services)
dotnet test tests/Integration/ --logger "console;verbosity=detailed"

Running Services Individually

Backend Services (Development Mode)

# Terminal 1 - API Gateway (Port 7000)
cd src/Gateway/API.Gateway
dotnet run --launch-profile Development

# Terminal 2 - Payment API (Port 5001)
cd src/Services/Payment.API
dotnet run --launch-profile Development

# Terminal 3 - Risk API (Port 5002)
cd src/Services/Risk.API
dotnet run --launch-profile Development

# Terminal 4 - Settlement API (Port 5003)
cd src/Services/Settlement.API
dotnet run --launch-profile Development

# Terminal 5 - Notification API (Port 5004)
cd src/Services/Notification.API
dotnet run --launch-profile Development

# Terminal 6 - Real-time WebSocket API (Port 3000)
cd src/Services/RealTime.Node.API
npm install
npm run dev

Azure Functions (Background Jobs)

# Terminal 7 - Payment Processor (Port 7071)
cd src/Functions/PaymentProcessor
func start

# Terminal 8 - Payment Collection (Port 7072)
cd src/Functions/PaymentCollection
func start --port 7072

# Terminal 9 - Notification Scheduler (Port 7073)
cd src/Functions/NotificationScheduler
func start --port 7073

Frontend Applications

# Terminal 10 - Admin Portal (Port 4200) - Vue.js 3
cd src/Web/AdminPortal
npm install
npm run dev

# Terminal 11 - Merchant Portal (Port 4202) - Angular 17
cd src/Web/MerchantPortal
npm install
npm start

# Terminal 12 - Consumer Portal (Port 4201) - Angular 17
cd src/Web/ConsumerPortal
npm install
npm start

# Terminal 13 - Legacy Portal (Port 4203) - Knockout.js
cd src/Web/LegacyPortal
npm install
npm start

Docker Compose Deployment

# Start all services in detached mode
docker-compose up -d

# Start specific services only
docker-compose up -d sqlserver redis mongodb

# View logs
docker-compose logs -f payment-api
docker-compose logs -f risk-api

# Restart a service
docker-compose restart payment-api

# Stop all services
docker-compose down

# Stop and remove volumes (clean slate)
docker-compose down -v

# Rebuild and restart
docker-compose up -d --build

Configuration

Database Connection Strings

Each service uses its own dedicated SQL Server database:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost,1433;Database=YourCompanyBNPL_Payment;User Id=sa;Password=YourStrong@Password123;TrustServerCertificate=True;MultipleActiveResultSets=true"
  }
}

Databases:

  • YourCompanyBNPL_Payment - Payment service transactions
  • YourCompanyBNPL_Risk - Risk assessments and fraud data
  • YourCompanyBNPL_Settlement - Settlement batches and reports
  • YourCompanyBNPL_Notification - Notification queue and templates

Essential Environment Variables

Configure in appsettings.json or via environment variables:

# Application Environment
ASPNETCORE_ENVIRONMENT=Development|Staging|Production

# Database
ConnectionStrings__DefaultConnection="Server=localhost,1433;..."

# Redis Cache
Redis__Configuration="localhost:6379,password=YourRedisPassword"
Redis__InstanceName="YourCompanyBNPL:"

# MongoDB (Logs & Events)
MongoDB__ConnectionString="mongodb://root:YourMongoPassword@localhost:27017"
MongoDB__DatabaseName="YourCompanyBNPL_Logs"

# JWT Authentication
JWT__SecretKey="your-secure-256-bit-secret-key-generate-with-openssl"
JWT__Issuer="https://api.yourcompany.com"
JWT__Audience="https://api.yourcompany.com"
JWT__ExpirationMinutes=60

# Notification Providers
NotificationProviders__Email__SendGrid__ApiKey="SG.your-sendgrid-api-key"
NotificationProviders__Email__SendGrid__FromEmail="noreply@yourcompany.com"
NotificationProviders__SMS__Twilio__AccountSid="AC..."
NotificationProviders__SMS__Twilio__AuthToken="your-twilio-token"
NotificationProviders__SMS__Twilio__FromNumber="+4712345678"
NotificationProviders__Push__Firebase__ProjectId="yourcompany-bnpl"

# Payment Gateways
PaymentGateways__Stripe__ApiKey="sk_test_..."
PaymentGateways__Adyen__ApiKey="your-adyen-api-key"
PaymentGateways__Nets__MerchantId="your-nets-merchant-id"
PaymentGateways__Vipps__ClientId="your-vipps-client-id"

# Norwegian Credit Bureaus
CreditBureau__Experian__BaseUrl="https://api.experian.no/v1"
CreditBureau__Experian__ApiKey="your-experian-api-key"
CreditBureau__Bisnode__BaseUrl="https://api.bisnode.no/v1"
CreditBureau__Lindorff__BaseUrl="https://api.lindorff.no/v1"

# API Gateway (Ocelot)
GlobalConfiguration__BaseUrl="http://localhost:7000"

# Application Insights (Azure)
ApplicationInsights__ConnectionString="InstrumentationKey=..."

Security Note: Never commit sensitive credentials to version control. Use Azure Key Vault or environment-specific configurations.

API Documentation

All APIs provide comprehensive Swagger/OpenAPI documentation accessible when services are running:

Service Swagger URL Description
Payment API http://localhost:5001/swagger Payment processing, tokenization, webhooks, settlements
Risk API http://localhost:5002/swagger Credit risk assessment, fraud detection, ML models
Settlement API http://localhost:5003/swagger Batch settlements, reporting, merchant payments
Notification API http://localhost:5004/swagger Multi-channel notifications, templates, preferences

Key API Features

Payment API:

  • Payment creation and processing
  • Payment method tokenization
  • Webhook management with retry logic
  • Idempotency support
  • Refund and dispute handling
  • Fraud detection integration

Risk API:

  • Real-time credit risk assessment
  • ML-powered fraud detection
  • Norwegian credit bureau integration
  • Risk profile management
  • Custom risk rules engine

Settlement API:

  • Automated batch settlement processing
  • Multi-currency support
  • Settlement forecasting
  • Merchant payout management

Notification API:

  • Email, SMS, and Push notifications
  • Template management with versioning
  • User preference management
  • Scheduled notifications
  • Delivery tracking and analytics

Full API Documentation: See docs/API_DOCUMENTATION.md for detailed endpoint reference, request/response examples, and authentication details.

Testing

Unit Tests

# Run all unit tests
dotnet test tests/Unit/ --configuration Release

# Run specific test project with detailed output
dotnet test tests/Unit/Payment.API.Tests/ --logger "console;verbosity=detailed"
dotnet test tests/Unit/Risk.API.Tests/ --logger "console;verbosity=detailed"

# Run tests with coverage
dotnet test tests/Unit/ /p:CollectCoverage=true /p:CoverletOutputFormat=opencover

Integration Tests

# Ensure all services are running first
docker-compose up -d

# Run integration tests
dotnet test tests/Integration/Integration.Tests/ --logger "console;verbosity=detailed"

# Run specific integration test
dotnet test tests/Integration/Integration.Tests/ --filter "FullyQualifiedName~PaymentApiTests"

API Testing

# Health checks
curl http://localhost:7000/health  # API Gateway
curl http://localhost:5001/health  # Payment API
curl http://localhost:5002/health  # Risk API
curl http://localhost:5003/health  # Settlement API
curl http://localhost:5004/health  # Notification API

# Example: Create payment via API Gateway
curl -X POST http://localhost:7000/payment/api/v1/payments \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "amount": 1000.00,
    "currency": "NOK",
    "customerId": "customer-123",
    "merchantId": "merchant-456",
    "paymentMethod": "CreditCard"
  }'

# Example: Risk assessment
curl -X POST http://localhost:7000/risk/api/v1/riskassessment/assess \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "customerId": "customer-123",
    "requestedAmount": 5000,
    "loanTerm": 12
  }'

Test Coverage:

  • ✅ Unit tests for core business logic
  • Integration tests for API endpoints
  • Database integration tests with in-memory database
  • Load testing with JMeter/k6 (in progress)
  • End-to-end UI tests with Playwright (planned)

Monitoring & Observability

Access Monitoring Tools

Tool URL Credentials Purpose
Grafana http://localhost:3001 admin / admin Metrics dashboards and visualization
Prometheus http://localhost:9090 - Metrics collection and queries
Kibana http://localhost:5601 - Log analysis and search
Elasticsearch http://localhost:9200 - Log storage backend

Key Dashboards in Grafana

  1. BNPL Overview Dashboard

    • Total transactions and payment volume
    • Success/failure rates
    • Service health and uptime
    • API response times
  2. Payment Processing Dashboard

    • Payment gateway performance
    • Transaction trends by gateway
    • Refund and dispute metrics
    • Settlement status
  3. Risk & Fraud Dashboard

    • Risk score distribution
    • Fraud detection rate
    • Credit bureau API performance
    • High-risk transaction alerts
  4. Notification Dashboard

    • Delivery success rates by channel
    • Queue depth and processing time
    • Provider performance (SendGrid, Twilio)
    • User preference statistics

Application Logging

Log Destinations:

  • Console: Structured JSON logging (Development)
  • File System: Rolling files in logs/ directory
  • Elasticsearch: Centralized logging for production

Log Levels:

  • Information: Normal operations
  • Warning: Non-critical issues (e.g., retry attempts)
  • Error: Errors requiring attention
  • Critical: System failures requiring immediate action

Querying Logs in Kibana:

# Find failed payments
level:Error AND service:Payment.API

# Find fraud alerts
level:Warning AND message:*fraud*

# Find slow queries (>1s)
duration:>1000 AND service:Risk.API

Health Monitoring

Each service exposes health check endpoints:

# API Gateway health
curl http://localhost:7000/health

# Individual service health with detailed checks
curl http://localhost:5001/health  # Payment API
curl http://localhost:5002/health  # Risk API
curl http://localhost:5003/health  # Settlement API
curl http://localhost:5004/health  # Notification API

Health Check Components:

  • Database connectivity (SQL Server)
  • Redis cache connectivity
  • MongoDB connectivity
  • External service availability (payment gateways, credit bureaus)
  • Queue health (background jobs)

Deployment

Azure Cloud Deployment

# 1. Deploy infrastructure with Terraform
cd infrastructure/terraform
terraform init
terraform plan -var-file="terraform.tfvars"
terraform apply -var-file="terraform.tfvars"

# 2. Deploy Azure Functions
./scripts/deploy-functions.sh

# 3. Build and push Docker images to Azure Container Registry
az acr login --name yourcompanybnpl
docker-compose build
docker-compose push

# 4. Deploy to Azure Kubernetes Service (AKS)
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/configmap.yaml
kubectl apply -f k8s/secrets.yaml
kubectl apply -f k8s/

Azure Resources Created:

  • Azure Kubernetes Service (AKS) cluster
  • Azure SQL Database (per service)
  • Azure Redis Cache
  • Azure Service Bus
  • Azure Container Registry (ACR)
  • Azure Key Vault
  • Application Insights
  • Azure Functions App (3 functions)

Kubernetes Deployment

# Apply all manifests
kubectl apply -f k8s/

# Check deployment status
kubectl get pods -n bnpl-platform
kubectl get services -n bnpl-platform
kubectl get ingress -n bnpl-platform

# View logs
kubectl logs -f deployment/payment-api -n bnpl-platform

# Scale services
kubectl scale deployment payment-api --replicas=3 -n bnpl-platform

# Check health
kubectl port-forward service/api-gateway 7000:7000 -n bnpl-platform
curl http://localhost:7000/health

Docker Production Deployment

# Use production configuration
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d

# Scale specific services
docker-compose up -d --scale payment-api=3 --scale risk-api=2

Detailed Deployment Guide: See docs/DEPLOYMENT_GUIDE.md for complete production deployment instructions, CI/CD setup, and troubleshooting.

Security Features

Authentication & Authorization

  • JWT-based Authentication: All API endpoints require valid JWT tokens
  • Role-Based Access Control (RBAC): Fine-grained permissions (Admin, Merchant, Consumer)
  • Token Expiration: Configurable token lifetime with refresh token support
  • API Key Management: Secure API key storage and rotation

Data Protection

  • Encryption at Rest: AES-256 encryption for sensitive payment data
  • Encryption in Transit: TLS 1.3 for all external communications
  • Payment Tokenization: PCI DSS compliant card tokenization
  • Data Masking: Sensitive data masked in logs and responses

Security Controls

  • Input Validation: FluentValidation on all endpoints
  • SQL Injection Prevention: Parameterized queries via Entity Framework
  • XSS Protection: Content Security Policy (CSP) headers
  • CSRF Protection: Anti-forgery tokens for state-changing operations
  • Rate Limiting: Per-endpoint and per-user rate limiting
  • CORS Configuration: Strict origin whitelisting

Compliance

  • PCI DSS Level 1: Payment card data handling compliance
  • GDPR: Norwegian data protection regulations
  • Financial Regulations: Norwegian Financial Supervisory Authority (Finanstilsynet)
  • Audit Logging: Comprehensive audit trail for all operations

Security Monitoring

  • Intrusion Detection: Real-time threat monitoring
  • Anomaly Detection: ML-based fraud detection
  • Security Alerts: Automated alerting for suspicious activities
  • Regular Security Audits: Automated vulnerability scanning

Important: Never commit secrets, API keys, or passwords to version control. Use Azure Key Vault or environment variables for all sensitive configuration.

Known Issues & Limitations

Current Status

  • Build Status: All 14 projects compile successfully with 0 errors
  • Runtime Ready: All services start and respond to health checks
  • Warnings: ~60 nullable reference warnings (non-blocking, C# 8.0+ feature)

Recent Fixes Applied

  • FluentValidation: Updated Risk.API to use modern AddValidatorsFromAssemblyContaining<T>() API
  • Header Dictionary: Fixed potential runtime exceptions in RateLimitingService (ASP0019)
  • Code Quality: Removed duplicate using directives in Notification.API providers
  • Service Communication: Standardized API versioning across all services
  • Gateway Routing: All services properly routed through API Gateway on port 7000

Limitations

  1. Payment Gateways: Integration requires real API credentials from Stripe, Adyen, Nets, Vipps
  2. Credit Bureaus: Norwegian credit bureau integration requires active subscriptions
  3. Notification Providers: SendGrid, Twilio, Firebase credentials needed for production
  4. Authentication: Advanced auth providers (Azure AD, SAML 2.0) require additional configuration
  5. Browser Support: Optimized for modern browsers (Chrome, Firefox, Edge, Safari - latest 2 versions)

Development vs Production

  • Development: Uses mock/console providers for external services
  • Production: Requires real credentials and proper infrastructure setup

Note: For detailed issue tracking and fixes, see commit history and pull requests

Contributing

We welcome contributions to improve the BNPL platform!

How to Contribute

  1. Fork the Repository

    git clone https://github.com/saidulIslam1602/BNPL-Checkout-Debt-Management-Platform.git
    cd BNPL-Checkout-Debt-Management-Platform
  2. Create a Feature Branch

    git checkout -b feature/amazing-feature
  3. Make Your Changes

    • Follow existing code style and conventions
    • Add unit tests for new features
    • Update documentation as needed
    • Ensure all tests pass: dotnet test
  4. Commit Your Changes

    git add .
    git commit -m "Add amazing feature"
  5. Push to Your Fork

    git push origin feature/amazing-feature
  6. Open a Pull Request

    • Describe your changes in detail
    • Reference any related issues
    • Ensure CI/CD pipeline passes

Coding Standards

  • C#: Follow Microsoft C# coding conventions
  • JavaScript/TypeScript: Use ESLint configuration
  • Commit Messages: Use conventional commits format
  • Documentation: Update README and API docs for new features

Development Guidelines

  • Write unit tests for new code (aim for >80% coverage)
  • Use async/await for I/O operations
  • Implement proper error handling and logging
  • Follow SOLID principles and clean architecture patterns

License

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

MIT License Summary

  • Commercial use allowed
  • Modification allowed
  • Distribution allowed
  • Private use allowed
  • Liability and warranty disclaimers apply

Support & Documentation

Documentation

Getting Help

  • GitHub Issues: Open an issue
  • Discussions: Check existing discussions for common questions
  • Documentation: Review the /docs folder for detailed guides

Reporting Bugs

When reporting bugs, please include:

  • Steps to reproduce
  • Expected behavior
  • Actual behavior
  • Environment details (OS, .NET version, Docker version)
  • Relevant log output

Acknowledgments

Technologies & Frameworks

  • Microsoft: .NET 8.0, ASP.NET Core, Entity Framework Core, Azure
  • Frontend: Angular 17, Vue.js 3, TypeScript
  • Real-time: Node.js, Socket.IO, Express
  • Monitoring: Prometheus, Grafana, ELK Stack
  • Containerization: Docker, Kubernetes

Architecture Patterns

  • Microservices Architecture: Domain-driven design principles
  • CQRS Pattern: Using MediatR for command/query separation
  • Event-Driven Architecture: Asynchronous messaging with events
  • API Gateway Pattern: Centralized routing with Ocelot

Special Thanks

  • Built for the Norwegian BNPL market with local compliance
  • Designed with enterprise-grade security and scalability
  • Production-ready with comprehensive monitoring and logging

Built for the Norwegian fintech ecosystem

Repository: github.com/saidulIslam1602/BNPL-Checkout-Debt-Management-Platform

Last Updated: January 2026
Version: 1.0.0
Status: Production Ready

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors