Skip to content
Demo environment

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.
How the product works

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

  1. 01Search as a visitor

    Drag the split divider, open the filter drawer, watch the map pills follow the cards.

  2. 02Read one listing properly

    Gallery, running costs, energy class, neighbourhood, price history, seller trust.

  3. 03Negotiate as the buyer

    The seller has countered at €264,000 and it expires on Friday.

  4. 04Decide as the seller

    Two competing offers on the same apartment, one cash, one in a chain.