Property Management Solutions
← All docs

Platform strategy

╔══════════════════════════════════════════════════════════════════════════════╗
║                    PLATFORM STRATEGY & ARCHITECTURE                          ║
╚══════════════════════════════════════════════════════════════════════════════╝

Generated : 2026-07-19 (personas cross-link)
North star : docs/strategy.txt (public — edit manually)
Services   : docs/wiki-Mission_and_Services.txt (public — edit manually)
Personas   : docs/wiki-Personas.txt (public — Diane · Raj · Elena)

AUDIENCE & POSITIONING
══════════════════════

  Primary   : Small operators (5–30 doors), often family-owned portfolios
  Model     : Consulting + integration + stewardship — software is the engine
  Not       : Venture SaaS, AppFolio replacement at scale, black-box platform
  Personas  : Wiki → Personas — use for workflow & product positioning

  Family domain depth: ~500 doors (Arizona) — enterprise PM tooling in daily use.

CURRENT RUNTIME (July 2026 · rolling main)
══════════════════════════════════════════

  Entry point     : scripts/pm-menu.sh  (hub-based Bash menu)
  Database        : MariaDB / pmdb  (versioned migrations)
  QA sandbox      : pmdb_qa via Lab (PM_QA_MODE=1) — never production data
  Authorized run  : bin/run · bin/runsql · manifest/*.tsv
  Shared code     : lib/  (runsql, ledger, date, manifest, colors, tui, reports, qa_*)
  SQL queries     : sql/  (invoicing, ledger, reports, rent_collection, qa/, …)
  Statements PDF  : pandoc + templates/ + PMO letterhead settings
  Telemetry       : runtime_telemetry table (duration via pms_date_epoch_ms)
  Documentation   : docs/  + wiki-*.txt  ([y] System → wiki / refresh)
  Forum / notes   : commentorium → notes table
  Finance contract: docs/workflows-finance.txt
  QA framework    : docs/qa-regression-framework.md

PLATFORMS
═════════

  Production      : Ubuntu (DigitalOcean / similar) — pms-server-install/
  Also supported  : Arch Linux hosts; macOS for local development + QA Lab
  Date arithmetic : lib/date.sh
                      · GNU date on Linux (Arch/Ubuntu)
                      · BSD date on stock macOS (no coreutils required)
                      · Homebrew gdate used when present
  Bash            : scripts aim for Bash 3.2+ (macOS system bash);
                    mapfile polyfill + portable arrow keys in lib/tui.sh
                    (stty on /dev/tty; no key=$(read_key); no fractional read -t).
                    Login shell may be zsh — scripts still run under bash via shebang.
  MariaDB admin   : Lab bootstrap discovers CREATE privilege via
                      PMS_DB_ADMIN_USER / PMS_DB_ADMIN_CNF, OS unix_socket
                      user (Homebrew), root, then ~/.my.cnf

DESIGN PRINCIPLES
═════════════════

  • One script = one responsibility
  • Everything is a file — transparent, inspectable
  • Minimal dependencies for the PRODUCT: Bash + MariaDB client
  • Product design contract: docs/PRODUCT_DESIGN_CONTRACT.md
      — Core office = MariaDB + Bash (never rewrite hubs in Python/Node)
      — Landing / Demo Theater UI / steward pulse may use barebone tools
        (static HTML, optional Python utilities, GoAccess) ONLY if listed in
        manifest/perimeter_tools.tsv
  • Portable across Linux / Unix / macOS (same Lab battles)
  • Schema-first with live documentation
  • Two inventories: manifest/scripts.tsv + sql.tsv (product);
      manifest/perimeter_tools.tsv (storefront & host helpers)

DEPLOYMENT MODEL (hybrid — longer term)
═══════════════════════════════════════

  Phase 1: Managed cloud environment — fast onboarding, backups, support
  Phase 2: Operator-owned export — data sovereignty, on-prem or self-host

  Production layout: docs/pms.file_folder_layout.txt
    /opt/pms/releases/vX.Y/   versioned application
    /etc/pms/db.conf          secured credentials
    /var/lib/pms/             reports, backups, data

WIKI STRUCTURE
══════════════

  Public topics  : Schema, Workflows, Reports, Features, Mission, Personas, …
  Operator-only  : Internal Strategy (PIN required in wiki)

SUCCESS CRITERIA
════════════════
  • 5–150 unit portfolios operated with clear, defensible records
  • Statements reconcile; numbers are explainable
  • Cloud-to-local migration without losing integrity
  • Features ship as small scripts — customer feels ownership of the system