Problem
Changing MLS inventory had to become fast, crawlable, compliant listing pages. The client also needed secure control of inquiries, featured homes, analytics, and settings.
Client platform · real estate + MLS data
Build-time MLS ingestion for buyers; edge-backed tools for the business behind it.
Changing MLS inventory had to become fast, crawlable, compliant listing pages. The client also needed secure control of inquiries, featured homes, analytics, and settings.
A scheduled RESO pipeline generates Zod-validated MDX three times daily. Public pages are prerendered; the authenticated admin runs on Workers with D1, KV, and Analytics Engine.
Buyers get 300+ searchable listings with no request-time MLS calls. The client gets one operations dashboard, while hosting and automation remain $0 per month beyond the domain and MLS access.
GitHub Actions fetches active, pending, and recently sold listings three times daily, deduplicates by listing key, generates stable SEO slugs and MDX, refreshes agent statistics, then builds and deploys.
The Zod collection models required UPMLS listing and office fields, while reusable components render attribution, brokerage disclosures, and office contact details consistently.
Listing, search, map-data, and marketing routes are prerendered. Admin pages, form actions, analytics, and image endpoints stay dynamic on Cloudflare Workers.
An allow-listed proxy stabilizes third-party MLS photos, while a custom Astro image endpoint uses env.ASSETS.fetch() to avoid Cloudflare's same-zone error 1014.
Build-time Pagefind search, AVIF hero assets, lazy galleries, and viewport-loaded self-hosted MapLibre keep search and maps available without putting them on the critical path.
GitHub Actions handles synchronization and deployment; Workers, D1, KV, Analytics Engine, and cached media stay within Cloudflare's free tiers at current usage. The result avoids added IDX, CMS, analytics, and hosting subscriptions rather than hiding them behind another vendor.
The public catalog is only half the system. The private side turns the same Astro deployment into a focused operations tool without exposing MLS credentials or introducing a separate CMS stack.