In developmentCase study

A multi-landlord housing platform built so money and records are always correct

Our own SaaS product: landlords list lodges and manage tenancies, and students discover rooms and apply. It generalises what we learned building Glorious & Praises.

Lodge Platform LodgesApplicationsTenanciesPaymentsAudit log Block A · rooms ● occupied ○ held Receipt 2026-00042 Rent · 12 months Statusconfirmed Split at source Reminders −30d −14d −7d −1d due +3d +7d +14d +30d next: 7 days before due · sent once
Owner
DesMind product
Sector
PropTech
Services
Product strategy, architecture, full-stack engineering
Year
2026
The challenge

What needed solving

A single lodge can live with manual checks. A platform serving many landlords cannot: each landlord has several lodges, staff with different permissions and their own payout account.

Rent periods, receipts and payments have to be correct every time, including leap years, month ends, part-payments and tenants who join mid-year.

What we built

The solution

Organisations and roles

Landlords invite managers and caretakers, and a caretaker can be limited to the lodges they look after.

Directory and access codes

Lodges can be listed publicly or reached only by a join code, plus single-use personal invitation tokens.

Tenancies and billing

Approved applications become tenancies, billed yearly, six-monthly or monthly from the move-in date.

Split payments

Card payments settle straight to the landlord's Paystack subaccount, with the platform fee taken at source.

Reminders

Scheduled reminders before and after rent is due, with the landlord copied once a payment is late.

Audit log

Every change is recorded, from room edits to payment confirmations.

Architecture

How the system fits together

A simplified view of the main components and how requests move between them.

  1. Client
    Next.js web appLandlord dashboard, student directory and portal
  2. API
    Fastify APITyped routes, Zod validation, role-based access
    Worker and outboxPayment checks, reminders, email
  3. Data and services
    PostgreSQLAccessed through Drizzle ORM
    PaystackSubaccounts, split payments, webhooks
Engineering decisions

Choices that made the difference

  1. Nothing a browser or webhook says makes a payment count

    Webhooks and checkout returns only queue a check. A worker asks Paystack directly and settles the payment only if the full amount was paid.

  2. Billing periods counted from the move-in date

    A year runs to the same date a year later, and a tenancy starting on 31 January is billed to the end of each month without drifting.

  3. Gap-free receipt numbers

    Receipts are numbered per landlord, per year, with no gaps, which is what accountants and auditors expect.

  4. Secrets stored as hashes

    Invitation tokens are shown once and stored only as hashes, can expire, and can be revoked at any time.

  5. Reminders that never double-send

    If the worker is down, it catches up with the most urgent reminder due and never sends the same one twice.

Outcome

Lodge Platform is in active development as a DesMind product. Core organisation, tenancy, billing, payment and reminder flows are working, and we run demos for landlords on request.

Technology

  • Next.js
  • Fastify
  • PostgreSQL
  • Drizzle ORM
  • Zod
  • Paystack
Next case study PeriParen Perinatal mental health support that keeps sensitive data private by design

Have a system like this in mind?

Tell us what you are trying to achieve. We reply within two business days.