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.
This platform delivers a complete BNPL ecosystem with advanced features for merchants, consumers, and administrators. Built with scalability, security, and compliance in mind.
- 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
- 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
| 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 |
| 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 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
- 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
- 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
- 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
/healthendpoints
- .NET 8.0 SDK or higher (Download)
- Node.js 18+ and npm (Download)
- Docker Desktop (Download)
- Git for version control
# 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| 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
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
# 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"# 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# 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# 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# 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 --buildEach 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 transactionsYourCompanyBNPL_Risk- Risk assessments and fraud dataYourCompanyBNPL_Settlement- Settlement batches and reportsYourCompanyBNPL_Notification- Notification queue and templates
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.
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 |
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.
# 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# 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"# 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)
| 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 |
-
BNPL Overview Dashboard
- Total transactions and payment volume
- Success/failure rates
- Service health and uptime
- API response times
-
Payment Processing Dashboard
- Payment gateway performance
- Transaction trends by gateway
- Refund and dispute metrics
- Settlement status
-
Risk & Fraud Dashboard
- Risk score distribution
- Fraud detection rate
- Credit bureau API performance
- High-risk transaction alerts
-
Notification Dashboard
- Delivery success rates by channel
- Queue depth and processing time
- Provider performance (SendGrid, Twilio)
- User preference statistics
Log Destinations:
- Console: Structured JSON logging (Development)
- File System: Rolling files in
logs/directory - Elasticsearch: Centralized logging for production
Log Levels:
Information: Normal operationsWarning: Non-critical issues (e.g., retry attempts)Error: Errors requiring attentionCritical: 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
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 APIHealth Check Components:
- Database connectivity (SQL Server)
- Redis cache connectivity
- MongoDB connectivity
- External service availability (payment gateways, credit bureaus)
- Queue health (background jobs)
# 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)
# 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# 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=2Detailed Deployment Guide: See docs/DEPLOYMENT_GUIDE.md for complete production deployment instructions, CI/CD setup, and troubleshooting.
- 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
- 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
- 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
- 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
- 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.
- 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)
- 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
- Payment Gateways: Integration requires real API credentials from Stripe, Adyen, Nets, Vipps
- Credit Bureaus: Norwegian credit bureau integration requires active subscriptions
- Notification Providers: SendGrid, Twilio, Firebase credentials needed for production
- Authentication: Advanced auth providers (Azure AD, SAML 2.0) require additional configuration
- Browser Support: Optimized for modern browsers (Chrome, Firefox, Edge, Safari - latest 2 versions)
- 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
We welcome contributions to improve the BNPL platform!
-
Fork the Repository
git clone https://github.com/saidulIslam1602/BNPL-Checkout-Debt-Management-Platform.git cd BNPL-Checkout-Debt-Management-Platform -
Create a Feature Branch
git checkout -b feature/amazing-feature
-
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
-
Commit Your Changes
git add . git commit -m "Add amazing feature"
-
Push to Your Fork
git push origin feature/amazing-feature
-
Open a Pull Request
- Describe your changes in detail
- Reference any related issues
- Ensure CI/CD pipeline passes
- 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
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
- Commercial use allowed
- Modification allowed
- Distribution allowed
- Private use allowed
- Liability and warranty disclaimers apply
- Quick Start: QUICK_START.md
- API Reference: docs/API_DOCUMENTATION.md
- Deployment Guide: docs/DEPLOYMENT_GUIDE.md
- Payment API Features: src/Services/Payment.API/PAYMENT_API_ENHANCEMENTS.md
- Risk API Guide: src/Services/Risk.API/README.md
- Notification API Guide: src/Services/Notification.API/README.md
- Merchant Portal Guide: src/Web/MerchantPortal/README.md
- GitHub Issues: Open an issue
- Discussions: Check existing discussions for common questions
- Documentation: Review the
/docsfolder for detailed guides
When reporting bugs, please include:
- Steps to reproduce
- Expected behavior
- Actual behavior
- Environment details (OS, .NET version, Docker version)
- Relevant log output
- 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
- 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
- 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