Skip to content

Cross-platform parity ​

The React application is the frozen audit and rollback baseline. Flutter is the canonical implementation and source owner for Web, iOS, Android, Supabase contracts and functions, Hermes, workers, localization, taxonomy, design tokens, and generated output.

The executable source of truth is contracts/parity/capabilities.yaml. It is generated from the frozen React route and operation exports and checked by tool/run_parity_contract.dart.

Current contract ​

RequirementCurrent value
Frozen React commit51f1b203b0651cf88db55b0f4d88afcc3da77884
Active legacy routes267
Implemented capabilities267
Capability gaps0
Route exemptions0
Broad-prefix exemptionsdisabled
Canonical UIFlutter Ion Aurora
Canonical localesassets/translations/ar.json, assets/translations/en.json

An implemented capability must link concrete Flutter behavior, its permission policy, backend contracts, and focused tests. A route that merely resolves, a placeholder screen, or a broad redirect does not satisfy the contract.

Shipping surfaces ​

WorkflowFlutter WebFlutter iOSFlutter AndroidGenerated output
Authentication, OTP, passkeys, trusted devicesβœ…βœ…βœ…β€”
Staff dashboards and persona navigationβœ…βœ…βœ…β€”
Properties, submissions, duplicate resolutionβœ…βœ…βœ…PDF, XLSX, share
Clients, requests, matching, follow-upβœ…βœ…βœ…PDF, XLSX
Deals, transitions, reminders, outbox eventsβœ…βœ…βœ…PDF, XLSX
Valuations, visits, inspection, deliveryβœ…βœ…βœ…bilingual PDF
Quotations, invoices, payments, statementsβœ…βœ…βœ…PDF, XLSX, print
Tasks, bundles, showcases, portalsβœ…βœ…βœ…PDF, print, share
Documents, contracts, signing, versionsβœ…βœ…βœ…PDF, DOCX
Notifications, Web Push, realtime, offline replayβœ…βœ…βœ…β€”
WhatsApp, mailbox, social media, internal chatβœ…βœ…βœ…CSV, share
Hermes, governed AI, knowledge and automationβœ…βœ…βœ…β€”
MapLibre, PACI, Baladia, Tahdeed, inspectionsβœ…βœ…βœ…PNG, PDF, print
Admin, users, roles, sessions, imports, archivesβœ…βœ…βœ…CSV, XLSX
Reports, calculators, portfolios, exportsβœ…βœ…βœ…PDF, DOCX, XLSX, CSV
Public, auth, token and SEO/PWA routesβœ…βœ…βœ…download and share

The three UI targets use the same Dart package. Responsive presentation and native interaction may differ, but permissions, validation, actions, database mutations, audits, notifications, outbox events, and document semantics must remain equivalent.

Examples of allowed platform adaptations:

  • native biometric unlock is mobile-only while WebAuthn passkeys cover web;
  • browser file capture replaces a native camera sheet where camera APIs are unavailable;
  • web uses downloads and print dialogs while mobile uses file providers and share sheets;
  • large administrative tables use responsive desktop grids and compact mobile cards without removing write operations;
  • offline inspection uses the platform storage implementation while retaining the same idempotent replay contract.

These are interaction adaptations, not capability exemptions.

Canonical ownership ​

  • Flutter routes and screens: lib/
  • Flutter tests: test/, integration_test/
  • Edge Functions: supabase/functions/
  • Migration history and database tests: supabase/migrations/, supabase/tests/
  • Hermes: services/hermes-server/
  • Function deployment ownership: contracts/backend/function-ownership.json
  • Cloudflare Worker ownership: contracts/backend/worker-ownership.json
  • Code-graph build and upload: .github/workflows/graph-update.yml, scripts/graphify_ci_build.py
  • Generated Supabase schema: contracts/generated/supabase.types.ts
  • Generated PostgREST fixtures: test/contract/fixtures/
  • Taxonomy: contracts/taxonomy_registry.json
  • Design tokens: lib/core/theme/tokens.dart

Production builds must not fetch a sibling source checkout, .shared, a personal access token, or MONOREPO_FETCH_TOKEN.

Verification ​

Run the blocking contract checks from the repository root:

bash
dart run tool/run_parity_contract.dart --check
node tool/generate_function_ownership_manifest.mjs --check
node tool/generate_worker_ownership_manifest.mjs --check
flutter test test/contract --reporter=expanded
supabase db reset --local --no-seed
supabase test db

The production release additionally requires the complete Flutter, Hermes, and Edge Function test suites; web, Android, and iOS release builds; bilingual role journeys; operation replay against sanitized staging fixtures; performance and bundle budgets; and the controlled cutover gates in PRODUCTION_CUTOVER.md.

React stays immutable and deployable only as the full-domain rollback target during the 30-day compatibility window. It is not an active source dependency or a destination for individual capability fallbacks.

The final active-production audit retained the same 267-route inventory. Its new MoJ full-identity deduplication, failed-insert observability, nightly reconciliation, unified-person merge primitive, Cloudflare scraper, and resumable backfill sources are now owned and tested here. React-only spinner, confirmation-pending, accessibility, and array-lookup changes did not introduce new operations; Flutter already provides equivalent pending, semantic, and repository-backed behavior.

Aldilaijan & Khobara Real Estate Platform