Four ways to look at Bytcheck
This prototype ships with 39 listings across 12 Slovak cities and a marketplace that is seeded mid-transaction — because a demo where nothing has happened yet tells you nothing. Pick a role below; each one keeps its own data, so acting as the buyer never changes what the seller sees.
Logged out
Public marketplace
Everything a first-time visitor sees: the homepage, search with the map, property detail pages, the seller landing page and the process explainer.
Buyer
Tomáš Hudec — pre-approved to €285,000
Seeded mid-purchase: a live negotiation where the seller has countered, a transaction in the contract stage with two tasks due, five saved properties and three viewings in the calendar.
Seller
Katarína Hrušková — four listings, two sold
Seeded mid-sale: two live offers on one apartment, three viewing requests waiting on a decision, a transaction blocked on a bank confirmation, and an unfinished draft listing.
Administrator
Barbora Vargová — Trust & Operations
Marketplace health, the moderation queue with a flagged price anomaly, four verification requests, three open disputes and every transaction with its risk state.
How the prototype stores state
Frontend-first, with a real service layer behind it
- Catalogue data — the 39 listings, sellers, buyers and neighbourhood data are static, typed modules rendered on the server.
- Your actions — favourites, saved searches, viewings, offers, messages, transactions and listing edits go through pure service functions and persist to LocalStorage under one namespace per role.
- Independent roles — four namespaces, no shared writes. The buyer's negotiation and the seller's view of it are seeded from the same story, then diverge as you act.
- Swapping in a backend — the UI never touches storage directly, so replacing the service bodies with Supabase queries does not touch a single component.
Integration status
What is wired up in this environment
Mapboxnot configured
Running the branded static map: every listing is positioned exactly, hover and selection stay in sync with the results, but panning and zooming are limited. Add NEXT_PUBLIC_MAPBOX_TOKEN for the full map.
Supabasenot configured
Not required for the prototype. The mock service layer and LocalStorage cover every flow; src/lib/supabase/client.ts is the single integration point.
Nothing in this prototype calls a third-party service without a key, and nothing breaks when one is missing — every dependency degrades to a designed fallback rather than an error.
A suggested five-minute route
- 01Search as a visitor
Drag the split divider, open the filter drawer, watch the map pills follow the cards.
- 02Read one listing properly
Gallery, running costs, energy class, neighbourhood, price history, seller trust.
- 03Negotiate as the buyer
The seller has countered at €264,000 and it expires on Friday.
- 04Decide as the seller
Two competing offers on the same apartment, one cash, one in a chain.