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.transfer ensures 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.
Case study

Replaced scattered timesheets and manual payroll processes with a single source of truth. Consultants log hours in one system, managers approve in real-time, and exports are audit-ready by default.

Full-stackInternal toolsIntegration
Case study

Replaced cash handling at the company canteen with NFC tap-to-buy. Employees tap badges, purchases sync to payroll, and the canteen eliminated cash entirely.

Full-stackInternal toolsIntegration
Writing

How a three-person dev team at a Copenhagen consultancy decided what to build, what to buy, and what to hybridise, and why those decisions weren't really about preferences.

ArchitectureProcessInternal tools
Writing

The steps I use to go from a sentence-long idea to a scoped, buildable MVP with realistic trade-offs.

ProductArchitectureProcess