# Feature Matrix & Synthesis — PH Property Portals > Cross-competitor synthesis of the 14 teardowns in this folder. Read the per-competitor > files for evidence and endpoint-level detail. This doc is the "what it means for us" layer. > Compiled 2026-07-11. Our own design constraints live in `../../DESIGN.md`. Legend: ✅ present · ◑ partial / gated / weak · ❌ not present · — not observed (couldn't confirm) --- ## Table A — Tech stack & data layer | Portal | Category | Framework | Host / CDN | Listing data source | Structured data | |---|---|---|---|---|---| | **Homex** | Condo-mgmt SaaS + lead micro-site | Next.js (App Router, RSC) | Vercel (no CDN in front) | Client-fetched `/api/public/*` JSON (flat rows) | ❌ no JSON-LD | | **Lamudi** | Major classifieds | Java / Jetty + web-component lib | AWS CloudFront | Multi-source ingestion; LIFULL Connect backend | ✅ RealEstateListing / BreadcrumbList | | **MyProperty** | Major classifieds | Java / Jetty (same white-label as Lamudi) | AWS CloudFront | LIFULL Connect backend (same S3 bucket) | ✅ RealEstateListing / Offer / Breadcrumb | | **Dot Property** | Major classifieds | Laravel + Blade (jQuery→Tailwind) | Cloudflare | LIFULL Connect backend (shared S3) | ◑ GeoCoordinates only | | **OnePropertee** | Buyer-matching marketplace | Meteor.js (DDP/WebSocket) | AWS CloudFront + WAF | Meteor DDP (no REST observed) | ◑ ImageGallery only | | **Hoppler** | Brokerage marketplace | Node/Express SSR + React islands; Java API | Nginx + CloudFront + imgix | Base64-JSON in `