Skip to content
Back to case files
WorkIn progress

Parking-Space Asset Custody

Contracts, lease signing and renewal, deposits and revenue split for managed parking-space assets

Role
Full-stack (endpoints, signing flow, admin review)
Scale
Contract → bill → split, end to end
Period
Aug 2026 — Present
Spring BootMyBatis-PlusMySQLVue 2uni-appLakala split settlement

What I did

  • The three-party arrangement (owner / platform / tenant) is modelled explicitly: custody contract, lease contract, bills and splits each keep their own identity
  • Combined checkout at signing: rent, deposit, service fee, property fee and space-management fee in one order, split by contract on callback
  • Renewal extends from the original expiry; move-out goes to admin review and triggers the deposit refund, with penalty and served period verifiable
  • Split recipients and ratios configured in the console; settled on payment success and traceable to contract and order

Context

A parking space is a silent asset: the owner has one but does not use it, the property manager wants to operate it but lacks a system. Custody turns this into a three-party arrangement — the owner entrusts the space, the platform operates it and splits revenue, the tenant pays monthly.

Party What they care about What the system holds
Owner (principal) Is the space rented, how much is paid out monthly Custody contract, bills, split records
Platform (operator) Listing efficiency, fulfilment risk, reconcilable books Space pool, lease contracts, bills and reconciliation
Tenant Price, term, deposit, renewal Lease contract, renewal, move-out and deposit refund

All three share one copy of the space and contract data but see different slices — that is where most of the permission and presentation work on this line goes.

What the system does

Stage Capability
Custody Contract entry, review and activation; bind space and owner
Listing Available spaces; rules for price, minimum term, deposit
Signing Online signing; rent + deposit + service + property + space-management fees in one payment
Fulfilment Renewal (extending), move-out request, admin review, deposit refund
Settlement Split recipients and ratios, per-transaction split, bills and reconciliation

What I built

Signing is the most error-prone stage: one payment splits into five fee types going to different accounts; a renewal must extend the original expiry rather than restart today; a move-out must pass review before a refund fires. I consolidated the state transitions and amount calculations into one explicit state machine on the backend, so the frontend only renders and navigates instead of recomputing.

On the console I added split-recipient and ratio configuration, the deposit-refund review entry, and unified maintenance of contract details (counterparty, agreement name, brand).

Money and states

Custody money is not “one order, one amount”; five fee types each keep their own books:

Signing payment ──split──┬─ rent            → apportioned to bills by lease period
                         ├─ deposit         → refunded after move-out review
                         ├─ service fee     → platform revenue
                         ├─ property fee    → belongs to the property manager
                         └─ space fee       → belongs to the lot

Each type has its own refund and reconciliation rules, which is why the system keeps three layers — contract, order, bill — instead of piling fields into one table. State machines are layered too: a contract is pending / active / expired / terminated, a bill is unpaid / paid / refunded, an order is pending / succeeded / closed. Any change in one layer must explain why the other two did not change.

Engineering notes

  • Every amount is traceable: any split traces back to contract, order and payment record
  • State machines, not scattered checks: contract, order and bill each own their state
  • Configured settlement: ratios and recipients live in the console, so business changes need no release
  • Three-party view isolation: owner, platform and tenant see different slices of the same data, trimmed by the API rather than hidden in the UI

Team and scope

The team owns the space pool and listing, custody contract review, bills and reconciliation reports, and payment and split integration. I own the signing and renewal endpoints and mini-program flow, move-out review linkage, the split configuration page, and unified contract details.