Real estate marketplace and radar
The car engine retargeted to real estate, with a listing-change radar.
Dev-storyChallenge
Real estate listings live or die on search visibility, and buyers want to know when a listing or its price changes at the source.
What we did
Built on the carsmarket engine (Vue 3 + Vite + webedge-db, BetterAuth login), with @unhead/vue emitting title/meta/canonical and JSON-LD for listings, plus a separate radar that monitors listing sources for new and changed listings.
Result
A real-estate marketplace with proper SEO markup, and a monitoring side that surfaces source and price changes rather than just static listings.
Dev-story article
Real estate marketplace and radar: how the project was built
The marketplace engine originally written for a car classifieds site had to be retargeted to property: different taxonomy, different search axes, and a market where one portal already owns organic search. The tension was building something that ranks and stays honest without mass-scraping anyone. So the work leaned into structured SEO landings, defensible data flows, and a radar that watches listings and feeds instead of hammering third-party sites.
Sections
05
Modules
05
Stack
Vue 3 + webedge-db
Why the project exists
Real estate listings live or die on search visibility, and buyers want to know when a listing or its price changes at the source.
The marketplace engine originally written for a car classifieds site had to be retargeted to property: different taxonomy, different search axes, and a market where one portal already owns organic search. The tension was building something that ranks and stays honest without mass-scraping anyone. So the work leaned into structured SEO landings, defensible data flows, and a radar that watches listings and feeds instead of hammering third-party sites.
What was built
Built on the carsmarket engine (Vue 3 + Vite + webedge-db, BetterAuth login), with @unhead/vue emitting title/meta/canonical and JSON-LD for listings, plus a separate radar that monitors listing sources for new and changed listings.
A single-page Vue 3 marketplace with a user dashboard and admin zone, backed by a reactive realtime backend for queries, search and file storage. It covers city/district search on a clustered map, per-listing price history, saved-search email alerts, and an agency feed pipeline that imports XML/CSV/JSON into a review queue rather than publishing blindly.
Main modules and user path
SEO landing generator that emits sitemap entries and client-side Breadcrumb/CollectionPage JSON-LD for segment+city+district searches like apartments-for-rent-in-a-given-city, with per-route title/canonical driven by @unhead/vue
Agency feed importer that auto-detects XML/CSV/JSON, normalizes both English and Lithuanian field keys, drops incoming listings into a pending queue keyed by external_id and can deactivate objects that vanished from the feed
Hourly feed-monitoring cron that writes system alerts for failed, stale, empty or mass-deactivated feeds and mails admins through the same mailer channel with a cooldown
Search-demand analytics that aggregate anonymous daily stats — city, district, type, price/area bands, result counts and no-result searches — behind rate limits, surfaced in an admin demand dashboard
Listing price-history plus price-per-square-meter filters and saved searches with instant/daily/weekly email digests that only send genuinely new active listings
Architecture and technology decisions
Built with Vue 3, webedge-db, Scraping.
Vue 3 + Vite SPA on Cloudflare Pages, a reactive realtime backend (webedge-db) for data/auth/file storage with Leaflet maps, and a migration from raw reactive subscriptions to TanStack Vue Query for paginated queries and subscription cleanup.
Result and lessons
A real-estate marketplace with proper SEO markup, and a monitoring side that surfaces source and price changes rather than just static listings.
A working property marketplace that grows organic reach through structured landings while keeping ingestion safe: feeds go through review, missing objects get deactivated, and admins get alerted when a feed breaks.
Related articles
Read next
Related project stories
These projects share nearby technical or product decisions, so they show how the same principle behaves in another context.
Dev-storyCars marketplace
A car marketplace — a Vue 3 SPA with realtime search, external auction sources and price-drop alerts.
Dev-storyService marketplace
The same webedge-db engine for services — profiles, enquiries, reviews.
Universal classifieds marketplace
Universal classifieds marketplace
A universal classifieds board on the same engine — 10 categories, faceted search.
Have a similar idea?
Discuss your project