All projects

Cars marketplace

A car marketplace — a Vue 3 SPA with realtime search, external auction sources and price-drop alerts.

Vue 3webedge-dbSearch
carsmarket.lt screenshotDev-story
01

Challenge

A car marketplace needs fast, live filters over a lot of listings, and separate buyer, seller-dashboard and admin areas — usually three apps.

02

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.

03

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

01

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.

02

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.

03

Main modules and user path

M01

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

M02

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

M03

VIN trust signals, price history and price-drop alerts, with VIN and price-drop filters on the listing view

M04

Buyer-seller messaging with seller replies, and a Telegram bot wired through a secret-verified webhook and a 5-minute cron for auction alerts

M05

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

04

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.

05

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.

Read next

These projects share nearby technical or product decisions, so they show how the same principle behaves in another context.

Have a similar idea?

Discuss your project