page:blueprints:property management:public directory:django

Property management: public directory using Django

Summary

A public directory blueprint for property management built with Django on Ample. Domain schema:

Public information: available rentals, office contacts, application process. Kept out of scope until handling is reviewed: tenant identity and payment history, inspection reports with personal data. Tenant data is personal and often regulated; only published listings and office-scoped reporting are modeled.

Technical basis verified on Django: a workspace-scoped table, an explicit state machine (draft to review to published) that rejects invalid transitions, and a cross-workspace read that returns nothing (transitions=true isolation=true).

Resource Requirements

Infrastructure Requirements

Prerequisites

Workflow Steps

  1. Model the property management domain: Create the tables listings, agencies, maintenance_vendors, reports, state_transitions. Rental listings with publishing status lives in listings; keep the sensitive classes (tenant identity and payment history, inspection reports with personal data) out of this schema.
  2. Workflow step 1: Model listings with a publishing_status state machine scoped to the agency.
  3. Workflow step 2: Serve only published listings, with media from the CDN bucket.
  4. Workflow step 3: Enforce the agency scope on every query.
  5. Workflow step 4: Deploy and verify a published listing and that unpublished listings are absent.
  6. Deploy: Run the synchronous deploy once and read the result. Re-running with no change is a no-op.
  7. Verify: Run the pattern self-test(s) from the example (/p/relational-records) and your own acceptance checks for the property management workflow.

Examples

Success Checks

Limitations

Cost Estimate

Evidence Summary

Next Actions