Brokerage property publish checklist β
Operational steps to move a property from staff entry to public production across aldilaijanre (web) and aldilaijankhobara-app (Flutter). Both apps write to the same Supabase project (jrsgosnnyjonxaesqtln).
Prerequisites β
- Staff account with brokerage write access
- Property row exists in
properties/properties_base al_ard = 'available'(English machine key β required after WS3)
Checklist β
1. Complete property data β
- [ ] Owner linked (
owner_client_idor name fields) - [ ] Location: governorate, area, block/plot (PACI-backed where possible)
- [ ] Specs: type (
al_wada), category, size (al_misaha), condition - [ ] Pricing:
al_sier/owner_price/market_estimate+display_price_mode - [ ] Listing arrangement:
mubashir,al_maktab, commission inextended_details
2. Upload media β
- [ ] Attach photos/docs via
property_attachments(web Step Media or Flutter detail screen) - [ ] Optional: virtual tour URL, external video links
3. Enable catalog visibility β
- [ ] Set
show_in_catalog = true - [ ] Confirm
al_ard = 'available' - [ ] Optional:
show_location_in_catalog = truefor block/plot/coords on public page - [ ] Optional:
show_in_splash, assignbundle_id, setmarketing_method
4. Verify public catalog RPC β
Run in Supabase SQL editor (or REST RPC):
sql
SELECT id, al_mintaqa, al_ard, al_sier
FROM get_catalog_properties()
WHERE id = '<property-uuid>';Expected: one row returned. If empty, check:
| Symptom | Fix |
|---|---|
show_in_catalog is false | Toggle catalog on in web Properties table or Flutter Marketing step |
al_ard is not available | Set listing status to Available |
| Migration not applied | Apply 20260630110000_fix_catalog_al_ard_available_keys.sql |
5. Downstream channels (optional) β
| Channel | Action | Surface |
|---|---|---|
| Public catalog page | Auto β reads get_catalog_properties() | Web /catalog, Flutter browse |
| Public detail | Open /p/:id or Flutter public property screen | Respects display_price_mode |
| Share text / WhatsApp link | Requires catalog-live gate | Flutter share sheet |
| WhatsApp Meta catalog | Staff sync from web | whatsapp_catalog_sync (web-only) |
| Promo video | Staff trigger | property_promo_videos + assemble-promo edge fn |
| Property bundle | Assign bundle_id, verify get_public_bundle(share_token) | Web bundle share link |
Dual-client entry paths β
| Step | Web (aldilaijanre) | Flutter (aldilaijankhobara-app) |
|---|---|---|
| Create/edit | /brokerage/properties β PropertyFormDialog | property_form_screen.dart |
| Catalog toggle | Properties table or detail header | Marketing step or detail actions |
| Media | Step Media (wizard) | Detail screen attachments |
| Workflow | /brokerage/properties/workflow/:id | Lifecycle on detail screen |
Schema parity β
Listing arrangement fields must match between clients. See:
- Web:
src/lib/property/listingArrangement.ts - Flutter:
lib/data/schemas/listing_arrangement.dart - Tests:
test/features/properties/property_entry_parity_test.dart
