Files
MokoSuiteRealty/CLAUDE.md
T
jmiller 2cdf4efb73
Universal: Auto Version Bump / Version Bump (push) Successful in 9s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 11s
docs: replace template CLAUDE.md with repo-specific version
2026-06-22 13:47:20 +00:00

2.2 KiB

MokoSuiteRealty

Real estate management for Joomla 6 — listings, showings, offers, commissions, open houses, property search.

Quick Reference

Field Value
Package pkg_mokosuiterealty
Layer 2 (requires: Client → CRM)
Language PHP 8.3+
Branch develop on dev, merge to main (protected)
Wiki MokoSuiteRealty Wiki

Architecture

Joomla package (pkg_mokosuiterealty) — Layer 2 add-on extending MokoSuiteCRM.

Dependencies

  • MokoSuiteClient (Layer 0) — base platform
  • MokoSuiteCRM (Layer 1) — contacts, deals, invoicing

Helpers (6)

  • ListingHelper — filtered search, dashboard stats, price history (transactional)
  • CommissionHelper — split calculations, agent YTD, pending payouts
  • ShowingHelper — scheduling, agent calendar, buyer feedback
  • OfferHelper — submit, accept (atomic FOR UPDATE), competing rejection
  • OpenHouseHelper — event scheduling, visitor sign-in, lead capture
  • PropertySearchHelper — Haversine geo proximity, saved searches

Database Tables (9)

listings, listing_photos, showings, offers, commissions, open_houses, open_house_visitors, price_history, saved_searches

Source Directory

  • source/pkg_mokosuiterealty.xml — package manifest
  • source/packages/ — sub-extensions

Rules

  • Never commit .claude/, .mcp.json, TODO.md, *.min.css/*.min.js
  • Attribution: Authored-by: Moko Consulting
  • Workflow directory: .mokogitea/
  • Wiki: documentation lives in the Gitea wiki, not docs/ files
  • Standards: MokoStandards
  • Changelog: [Unreleased] only — release system assigns versions
  • No upstream references: never reference competitor products

Coding Standards

  • PHP 8.3+ / Joomla 6 patterns
  • $this->getDatabase() in models, Factory::getContainer()->get(DatabaseInterface::class) in helpers
  • Factory::getApplication()->getIdentity() for user
  • FOR UPDATE inside transactions for race-condition-prone operations
  • quoteName() for columns, (int) cast for IDs, quote() for strings