Portfolio
03 / PROPTECH · PROPERTY SALES

Soldout

A simplified, multi-tenant property-sales platform derived from the PROMIS domain, built to preserve booking and inventory consistency from unit selection through billing and post-sale operations.

Internal — not publicly accessible Multi-tenant Transactional workflow Carbone documents
// screenshots
Soldout property sales dashboard
ss-01.jpg
01Sales dashboard
01
Soldout booking workflow
ss-02.jpg
02Booking workflow
02
Soldout installment monitoring
ss-03.jpg
03Installment monitoring
03
Soldout unit configuration
ss-04.jpg
04Unit configuration
04
ss-05.jpg
05SPR Document Preview
05
ss-06.jpg
06Cancellation and Refund
06
ss-07.jpg
07Customer Transfer
07
ss-08.jpg
08Finance Handoff
08
ss-09.jpg
09Audit History
09
ss-10.jpg
10Workflow Architecture
10

Business context

Derived from the broader PROMIS property domain, Soldout focuses on the operational lifecycle of a real-estate sale: project and unit configuration, booking, approval, installment invoicing, cancellation/refund handling, customer transfer, and formal SPR document generation. Each client can require a different SPR layout, so validated per-client templates are rendered through Carbone instead of hard-coding a single document format. It is organised as a module in a modular-monolith backend and reuses shared capabilities such as RBAC, audit logging, approval, numbering, storage, and finance integration.

The booking flow is deliberately server-owned. It calculates pricing, discounts, tax, receivables, and installment schedules, records the unit state and audit activity, and coordinates the related writes in a database transaction.

The challenge

A booking changes more than one record: unit availability, price, schedules, approval state, document numbering, audit history, and eventually finance. The formal SPR also cannot use one fixed layout because each client can have different document requirements. The module keeps transactional updates inside database transactions, adds a database-level active-booking constraint as a second line of defence against double-selling, and renders the selected client template through Carbone. This makes the system reject inconsistent states instead of attempting to repair them after the sale.

Solution design

  • Unit availability validation plus a partial unique PostgreSQL index to prevent two active bookings for one unit.
  • Transactional booking flow for unit status, document number, schedule, approval request, audit event, and related finance state.
  • Server-owned pricing for tax-inclusive/exclusive rules, discounts, Rupiah rounding, receivables, and validated manual/automatic installments.
  • Direct and configurable multi-level approval paths.
  • Billing schedule monitoring and branch/period-specific invoice posting.
  • Cancellation approval that handles deductions, refund payable integration, remaining schedules, unit release, and audit history.
  • Per-client SPR templates rendered through Carbone with booking, customer, and installment data, alongside customer-transfer validation.
Prev:Hayyu Skin Clinic Next:Absensi Sampang