Cars marketplace
A car marketplace — a Vue 3 SPA with realtime search, external auction sources and price-drop alerts.
Dev-storyChallenge
A car marketplace needs fast, live filters over a lot of listings, and separate buyer, seller-dashboard and admin areas — usually three apps.
What we did
One Vue 3 + Vite SPA (no Nuxt/SSG) with webedge-db for the database, realtime queries, full-text search and file storage; buyer, seller-dashboard and admin zones live in the same app, plus config-driven adapters that pull in external auction sources, VIN trust signals, price history with price-drop alerts, and buyer–seller messaging.
Result
This became the base the other WebEdge marketplaces (house, service, classifieds) were built from.
Dev-story article
Cars marketplace: how the project was built
A used-car marketplace has three audiences that usually get three separate apps: buyers browsing listings, sellers managing their own inventory, and admins moderating everything. We wanted them in one SPA sharing one reactive backend, so a price change or a new bid shows up live without polling or a second codebase. The hard part was doing that on a plain Vue + Vite static build, with no SSR, while keeping listing scroll position, filters and search fast under real traffic.
Sections
05
Modules
05
Stack
Vue 3 + webedge-db
Why the project exists
A car marketplace needs fast, live filters over a lot of listings, and separate buyer, seller-dashboard and admin areas — usually three apps.
A used-car marketplace has three audiences that usually get three separate apps: buyers browsing listings, sellers managing their own inventory, and admins moderating everything. We wanted them in one SPA sharing one reactive backend, so a price change or a new bid shows up live without polling or a second codebase. The hard part was doing that on a plain Vue + Vite static build, with no SSR, while keeping listing scroll position, filters and search fast under real traffic.
What was built
One Vue 3 + Vite SPA (no Nuxt/SSG) with webedge-db for the database, realtime queries, full-text search and file storage; buyer, seller-dashboard and admin zones live in the same app, plus config-driven adapters that pull in external auction sources, VIN trust signals, price history with price-drop alerts, and buyer–seller messaging.
It is a Vue 3 + Vite single-page app backed by webedge-db (our reactive backend) for the database, realtime queries, full-text search and file storage, with auth handled through BetterAuth. The same app serves the public marketplace, the /dashboard seller zone and the /admin moderation zone, routed as an SPA with per-route shells written at build time. On top of classified listings it also runs an internal auction flow with realtime countdowns, bids and buy-now.
Main modules and user path
Config-driven external auction-source adapters: three read paths (partner JSON API, ToS-gated read-only public HTML scrape, mock fixtures) so a new source needs config, not code, plus an ADAPTERS registry for sources that need custom pagination or bidding
A rate-limit-polite read-only scrape adapter that parses schema.org JSON-LD from static detail pages, respects robots rules and backs off on the first throttle signal rather than bypassing anti-bot challenges
VIN trust signals, price history and price-drop alerts, with VIN and price-drop filters on the listing view
Buyer-seller messaging with seller replies, and a Telegram bot wired through a secret-verified webhook and a 5-minute cron for auction alerts
Migration from raw reactive-backend queries to TanStack Vue Query for caching and paginated listing loads, with HMR query disconnect and reduced query load to cut jank during filter refreshes
Architecture and technology decisions
Built with Vue 3, webedge-db, Search.
Vue 3 + Vite SPA (no Nuxt, no SSG) on Cloudflare Pages, with webedge-db providing realtime queries, search and storage, BetterAuth for sessions, TanStack Vue Query on the client, and a build step that writes lightweight per-route HTML shells so SPA routes resolve on static hosting. External auction aggregation was ultimately scoped down to local-only listings; the adapter code stays dormant behind config.
Result and lessons
This became the base the other WebEdge marketplaces (house, service, classifieds) were built from.
One app that keeps buyer, seller and admin in sync in realtime, and became the engine the other WebEdge marketplaces were forked from.
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-storyReal estate marketplace and radar
The car engine retargeted to real estate, with a listing-change radar.
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