Skip to content

Loan Management System

A multi-tenant loan management system for loan origination, servicing, collections, and accounting. Built with Django and React, it supports multiple lending program types (installment loans, leases, lines of credit) through a plugin-based architecture, with double-entry ledger accounting, portfolio management, regulatory compliance, and automated workflows.

Key Capabilities

  • Loan Origination --- Borrower onboarding, loan applications, underwriting, approval workflows
  • Loan Servicing --- Amortization, payment processing, fee management, modifications, forbearance, deferments
  • Collections --- Delinquency tracking, collection queues, dunning sequences, promise-to-pay
  • Case Management --- Support cases, supercases (bulk), campaigns, borrower interactions
  • Financial Accounting --- Double-entry general ledger with journal entries
  • Portfolio Management --- Portfolio grouping, snapshots, investor assignments, loan tape generation
  • Compliance --- Regulatory rule engine, compliance monitors, credit reporting
  • Communications --- Multi-channel templated messaging (email, SMS, letter, in-app)
  • Document Management --- Upload, generation, storage (S3/local providers)
  • Borrower Self-Service Portal --- Loan viewing, payments, autopay, document access, support, hardship applications

Tech Stack

Layer Technology
Language Python 3.13+ (fully typed, mypy strict + django-stubs)
Framework Django 5.x
API django-ninja-extra (async class-based controllers)
Database PostgreSQL 16+ via psycopg 3
Multi-tenancy django-pgschemas (schema-per-tenant)
Auth django-allauth (headless, session-based)
Authorization django-guardian (object-level permissions)
Audit django-pghistory (PostgreSQL trigger-based)
Money django-money (MoneyField)
Task queue Celery + Redis (Canvas for workflows)
Admin Frontend React 18+ / TypeScript / react-admin / Vite
Borrower Portal React 18+ / TypeScript / MUI / React Query / Vite
Testing pytest-django (backend), Vitest (frontend)
Documentation MkDocs with Material theme
Deployment Render.com

Project Structure

lms/
├── docs/                    # MkDocs documentation project
│   ├── mkdocs.yml
│   ├── pyproject.toml
│   └── src/
├── backend/
│   ├── config/              # Django settings, urls, asgi, celery
│   │   └── settings/        # base.py, development.py, production.py, test.py
│   ├── apps/                # 22+ Django apps + subapps
│   │   ├── tenants/         # Public schema: tenant + domain models
│   │   ├── main/            # Main schema: LMS home (admin, allauth)
│   │   ├── users/           # Main + Tenant schemas: custom user model
│   │   ├── auth/            # Authentication controllers (allauth wrapper)
│   │   ├── tasks/           # Attachable task management
│   │   ├── notes/           # Attachable notes
│   │   ├── webhooks/        # Webhook subscriptions + event delivery
│   │   ├── contacts/        # Addresses, emails, phones (generic FK)
│   │   ├── borrowers/       # Borrower profiles + loan parties
│   │   ├── programs/        # Lending programs + loan products
│   │   ├── loans/           # Loan records + lifecycle
│   │   ├── amortization/    # Amortization schedules
│   │   ├── servicing/       # Modifications, forbearance, deferments, payoff, suspense
│   │   ├── payments/        # Payment processing (Authorize.Net, Stripe)
│   │   ├── fees/            # Fee schedules + management
│   │   ├── collateral/      # Collateral items, liens, valuations
│   │   ├── collections/     # Delinquency, queues, dunning, actions
│   │   ├── ledger/          # Double-entry general ledger
│   │   ├── disbursements/   # Loan funding
│   │   ├── documents/       # Document storage (S3, local)
│   │   ├── portfolio/       # Portfolio management + snapshots
│   │   ├── reporting/       # Report generators
│   │   ├── compliance/      # Regulatory compliance rule engines
│   │   ├── communications/  # Templated messaging (SendGrid, SMTP, Twilio)
│   │   ├── cases/           # Case management, supercases, campaigns
│   │   ├── operations/      # Event-sourced loan replay
│   │   ├── providers/       # Provider config + registry
│   │   └── portal/          # Borrower portal backend API
│   ├── common/              # Shared utilities (no models, no migrations)
│   └── tests/
├── frontend/
│   ├── admin/               # Admin dashboard (react-admin)
│   │   └── src/
│   │       ├── admin/       # 50+ react-admin resource screens
│   │       ├── providers/   # Data provider, auth provider, i18n
│   │       └── components/  # Shared components
│   └── borrower/            # Borrower self-service portal
│       └── src/
│           ├── pages/       # 17 pages
│           ├── hooks/       # React Query hooks
│           ├── api/         # HTTP client + portal API
│           └── components/  # 25+ components
├── docker-compose.yml
├── render.yaml
└── spec.md

Quick Start

Backend

cd backend
uv sync --extra dev           # Install dependencies + dev tools
cp .env.example .env          # Configure environment
uv run python manage.py migrateschema -as   # Run migrations (all schemas)
uv run python manage.py runserver           # Dev server

Frontend (Admin Dashboard)

cd frontend/admin
npm install
npm run dev                   # Vite dev server (port 5173)

Frontend (Borrower Portal)

cd frontend/borrower
npm install
npm run dev                   # Vite dev server (port 5174)

Documentation

cd docs
uv sync                      # Install docs dependencies
uv run mkdocs serve           # Dev server at http://127.0.0.1:8000/

Running Tests

# Backend
cd backend
uv run pytest                 # All backend tests (1200+)
uv run pytest apps/loans/     # App-specific tests
uv run ruff check .           # Lint
uv run mypy .                 # Type check

# Frontend (Admin)
cd frontend/admin
npm run test                  # All frontend tests (360+)
npm run lint                  # ESLint

# Frontend (Borrower Portal)
cd frontend/borrower
npm run test                  # Portal tests
npm run lint                  # ESLint

Documentation Sections

  • Getting Started --- Installation, configuration, quick start guide, project structure
  • Architecture --- System design, multi-tenancy, layered architecture, provider pattern, async patterns
  • Domain Guide --- Business logic by domain: loans, payments, fees, servicing, collections, ledger, and more
  • API Reference --- Complete REST API documentation for all 400+ endpoints
  • Admin Dashboard --- react-admin frontend: data provider, auth, resource screens, components, testing
  • Borrower Portal --- Borrower self-service: pages, API hooks, components, branding, authentication
  • Security --- Tenant isolation, authentication, data protection, audit trail, input validation
  • Internationalization --- Backend/frontend i18n, localization, adding languages
  • Operations --- Deployment, Docker, Celery, database management, monitoring
  • Development --- Contributing, testing guide, code conventions, adding apps and providers
  • Reference --- Model reference, choices/enums, chart of accounts, webhook events, Celery Beat schedule