Portfolio Project

Loan Investment Supermarket

Peer-to-Peer Lending Marketplace

A production-grade peer-to-peer lending platform that connects borrowers who need loans directly with investors who have capital to lend. This is not a tutorial CRUD application — it has real financial domain logic including amortization engines, installment state machines, background payment processing, late payment detection, default handling, and multi-role dashboards designed for regulatory compliance.

Built with ASP.NET Core 10, Blazor WebAssembly, Clean Architecture, CQRS + MediatR, SQL Server, SignalR, and a complete SaaS-ready feature set including 6 user roles, Stripe integration, and 30+ reusable Blazor components.

View on GitHub

Platform at a Glance

6

User Roles

30+

Blazor Components

5

Solution Layers

30+

Unit Tests

11

Doc Files

34

Onboarding Docs

Core Lending Lifecycle

The platform manages the complete peer-to-peer lending lifecycle. Borrowers apply, get matched with products, upload KYC documents, and receive decisions. CRM managers review and approve. Lenders fund approved loans from their capital pool. The system generates amortization schedules, processes payments, detects late payments, and handles defaults — all through domain-driven state machines that prevent invalid transitions.

Borrower Application

Multi-step wizard: loan parameters → product matching → selection → KYC document upload → review → submit

CRM Review Workflow

Approve, reject, or request additional documents with full audit trail and mandatory reason capture

Lender Funding

Review approved applications, accept or decline, capital management, and funding confirmation

Amortization Engine

Standard EMI formula with rounding correction on final installment — principal always balances to zero

Payment Processing

Full, partial, and early payoff. Background IHostedService runs daily to detect late payments and apply fees

Default Detection

3+ consecutive missed payments triggers default. Grace periods, fee application, and loan restructuring supported

Multi-Role Dashboards

Each user role sees a completely different experience. Resource-filtered queries (IResourceFilteredQuery) auto-scope data by authenticated user — lenders see only their portfolio, borrowers see only their loans, and administrators see the full platform picture.

Admin Command Centre

  • Real-time platform metrics: total funding, approval rates, pipeline
  • Borrower and lender management with verification workflows
  • Loan product catalogue with Draft → Approval → Published lifecycle
  • Role management with 6 roles and module-level permissions

Borrower Dashboard

  • Application tracking with status updates
  • Active loans with payment schedules and due dates
  • Loan calculator for pre-application planning
  • Payment history and upcoming payment reminders

Lender Portfolio

  • Funding queue with filter by product, amount, and credit tier
  • Portfolio overview: funded amount, outstanding, expected income
  • Earnings tracking: interest, late fees, projected returns
  • ROI analysis, yield metrics, and lender comparison benchmarks

Engineering Philosophy

  • Domain logic lives in the domain — not controllers or stored procedures
  • State machines enforce correctness — invalid transitions are impossible
  • Every mutation is auditable — who did what, when, and why
  • Background processing handles time-sensitive operations independently

Technology Stack

Backend

ASP.NET Core 10C# 13MediatR (CQRS)FluentValidationEntity Framework CoreSQL ServerASP.NET IdentityJWT + Refresh TokensSignalRIHostedServiceIMemoryCache

Frontend

Blazor WebAssemblyTailwind CSSDaisyUI30+ Reusable ComponentsRole-Based NavigationDark ModeLoading Skeletons

Architecture

Clean ArchitectureCQRS + DDDState MachinesResource-Filtered QueriesPipeline BehavioursDomain Services

Operations

Rate LimitingHealth ChecksCorrelation IDsAudit TrailCSV ExportxUnit + Moq

What This Demonstrates About My Engineering

Building financial platforms with real domain complexity
Implementing amortization and payment processing logic
Multi-role systems with resource-scoped data access
State machines enforcing valid business transitions
Background services for time-sensitive operations
Blazor WebAssembly as a frontend alternative to Angular
Full-stack .NET without JavaScript frameworks
Production patterns: rate limiting, health checks, audit

Interested in this level of engineering?

I am available immediately for senior developer, technical lead, and contract opportunities across the UK.