Case study
PayLater Web Bank – Containerised Banking Mock
Banking sandbox for demos and prototyping. Complete with multi-factor auth, double-entry accounting, and partner API mocks, packaged in a Docker setup you can spin up in minutes.
Full-stackBackendSecurity & EndpointInternal tools
DjangoDjango REST FrameworkPostgresGunicornNginxHTMXDocker Composedjango-otp (MFA)PHPMailer
Industry
Fintech / Education
Role
Architect & full-stack developer
Timeframe
2022
Location
Copenhagen, Denmark
Published
Mar 1, 2022
Context
I needed a realistic retail banking sandbox to demonstrate account management, transfers, lending, and partner-bank integrations with proper auditability and security.
Approach
- Built a Django + DRF app for customer and staff portals, backed by a double-entry ledger enforcing balanced debit/credit pairs.
- Added TOTP MFA (
django-otp) for logins and token-auth APIs for partner banks to initiate external transfers. - Used HTMX for responsive staff workflows (search, inline edits, account creation) without heavy SPA overhead.
- Packaged with Docker Compose (app, Postgres, Nginx + Certbot) and seeded demo data via management commands.
Highlights
Ledger.transferensures atomic paired entries; ranks gate loan eligibility and status transitions.- External transfer flow calls partner APIs, tracks pending status, and logs metadata for reconciliation.
- Staff dashboards run on HTMX partials; customers get classic web views for balances, transactions, and loan requests.
- Deployment mirrors production topology: Gunicorn behind Nginx with optional TLS and per-environment configs.
Impact
- Demonstrates a credible banking workflow with MFA and audit-ready ledgers.
- Speeds demos and tests with prebuilt seeds and container parity.
- Highlights emphasis on correctness, security, and practical developer ergonomics.