Interactive Chessboard Floor Plan for Developer's Website on 1C-Bitrix

Buyers choose apartments by comparing layouts and statuses on the site, and if the unit availability grid is inconvenient, they leave for a competitor. We develop developer websites on 1C-Bitrix with interactive floor plans, a mortgage calculator, and 1C integration. Our team delivers the project turnkey—from data architecture to launch and ongoing support—providing a reliable solution that helps sell.

Our competencies:

Frequently Asked Questions

Build a Developer's Website on 1C-Bitrix with Chessboard Layout

The average real estate sales cycle is 2–4 months. Buyers return to the website 8–15 times: comparing layouts, monitoring construction progress, calculating mortgages. If the site doesn't address these needs, the prospect turns to a competitor with a working chessboard. Our experience shows that proper data architecture and interactive tools boost conversion by 30–40%. A chessboard is twice as effective as a tabular catalog, generating 2x more leads.

The key technical feature is the interactive floor plan (chessboard). It's not just a table but an SVG scheme where each apartment is clickable, color-coded by status, and linked to real infoblock data. The chessboard sets a developer's site apart from a templated catalog.

We guarantee your chessboard will be fast, adaptive, and sync with 1C. Certified Bitrix specialists ensure stability and security. Over 10+ years, we've completed 200+ projects for developers — from small residential complexes to portals for major developers.

How the Chessboard Boosts Conversion

The chessboard is a visual representation of floors and apartments within a building. Users see a building facade or floor plan, click on an apartment, and receive a card with price, area, and layout. Apartments are color-coded by status: green — available, yellow — reserved, gray — sold. A developer with a working chessboard gets 30–40% more leads than with a tabular catalog. This is proven across 200+ projects: average conversion with a chessboard is 5.2% vs. 2.8% without.

Why 1C Integration Is Critical

Developers manage apartment inventory in 1C:Enterprise. Prices and statuses are updated in 1C, and the site must reflect real-time data. Without integration, data is entered manually — leading to errors and delays costing up to $1.8k–2.6k per month to fix. Integration is 10x cheaper than manual data entry, saving up to $1.8k–2.6k per month. We offer three options:

  • Standard 1C-Bitrix exchange (catalog module) — via CommerceML. Works for prices, but statuses require mapping.
  • REST API — 1C calls endpoint /api/apartments/update-status/, sends JSON {apartment_code, status, price}. A controller on the Bitrix side finds the element by LAYOUT_SVG_ID and updates properties. Update time: under 1 second.
  • Periodic CSV export — 1C uploads CSV to FTP; a Bitrix agent picks it up every 15 minutes and parses it. Parse errors occur in ~2% of cases — acceptable for legacy 1C.

Data Architecture: Complex → Building → Apartment

The infoblock structure mirrors the physical hierarchy: a residential complex contains buildings (sections), a building contains apartments.

Infoblock "Residential Complexes" (or Highload-block if fewer than 50 complexes) — parent entity. Properties:

Property Type Purpose
NAME Complex name Title and SEO
ADDRESS S (string) Address, geocoding
COORDINATES S ("lat,lng") Map marker
STAGE L (list) Stage: design, foundation, construction, completed
COMPLETION_DATE S (date) Planned completion date
INFRASTRUCTURE S (HTML/text) Infrastructure description
DEVELOPER_ID E (link) Reference to developer company
GENPLAN_SVG F (file) SVG of territory master plan

Infoblock sections — buildings and sections. Each complex is a first-level section. Buildings are second-level sections within the complex. If a building has multiple sections (entrances) — third-level sections. This nesting allows using standard bitrix:catalog.section.list navigation without custom queries.

Infoblock elements — apartments. Each apartment is linked to its building section. Minimum property set:

Property Type Index Comment
ROOMS L (list) Facet Studio, 1, 2, 3, 4+
AREA_TOTAL N (number) Facet Total area, m²
AREA_LIVING N No Living area
AREA_KITCHEN N No Kitchen area
FLOOR N Facet Floor number
PRICE N Facet Price, $
PRICE_PER_M2 N Facet Price per m²
STATUS L Facet Available / Reserved / Sold
LAYOUT_IMG F (file) No Layout image
LAYOUT_SVG_ID S (string) No Apartment ID in SVG chessboard
FINISHING L Facet No finish / Rough / Fine
WINDOW_VIEW L No Courtyard / Street / Panoramic
DECORATION_IMG F (multiple) No Decoration photos (if any)

The property LAYOUT_SVG_ID is the link between the database record and the SVG chessboard file.

How the Interactive Chessboard Works

Follow these steps to implement a chessboard:

  1. SVG file preparation. The designer draws a facade or floor plan in Adobe Illustrator or Figma and exports to SVG. Each apartment is a separate <path> with attribute data-apartment-id matching the LAYOUT_SVG_ID property value. Naming convention: building-floor-number (e.g., K1-5-01). The format is specified in the technical specification. If the designer submits an SVG without attributes, the developer spends 2-3 days manually annotating it. Therefore, an SVG template with example attributes is provided to the designer before drawing begins.

  2. Inline SVG, not . The SVG is not embedded via <img>, but inlined directly into the page HTML. Reason: contents of <img src="plan.svg"> are inaccessible to JavaScript (cross-origin policy). Inline SVG becomes part of the DOM, and each <path data-apartment-id="..."> is accessible via document.querySelector. In practice: Bitrix reads the SVG file from the building section property and outputs its contents via file_get_contents() directly into the component template:

$svgPath = CFile::GetPath($arResult['SECTION']['UF_FLOOR_PLAN_SVG']);
$svgContent = file_get_contents($_SERVER['DOCUMENT_ROOT'] . $svgPath);
$svgContent = preg_replace('/<\?xml[^?]*\?>/', '', $svgContent);
echo '<div class="chess-board">' . $svgContent . '</div>';
  1. JavaScript: linking SVG with apartment data. On page load, the frontend receives a JSON array of apartments for the current building. JSON structure:
const apartments = [
    {
        svgId: "K1-5-01",
        id: 4521,
        rooms: 2,
        area: 58.3,
        floor: 5,
        price: 7200000,
        status: "available",
        layoutImg: "/upload/layouts/k1-5-01.jpg",
        url: "/zhk-solnechnyj/korpus-1/kvartira-4521/"
    }
];

function initChessBoard(apartments) {
    const svgContainer = document.querySelector('.chess-board svg');
    if (!svgContainer) return;

    const statusColors = {
        available: '#4CAF50',
        reserved: '#FFC107',
        sold: '#9E9E9E'
    };

    apartments.forEach(apt => {
        const el = svgContainer.querySelector(`[data-apartment-id="${apt.svgId}"]`);
        if (!el) return;

        el.style.fill = statusColors[apt.status];
        el.style.cursor = apt.status === 'sold' ? 'default' : 'pointer';

        el.addEventListener('mouseenter', () => {
            if (apt.status === 'sold') return;
            showTooltip(el, apt);
        });

        el.addEventListener('click', () => {
            if (apt.status === 'sold') return;
            showApartmentCard(apt);
        });
    });
}
  1. Tooltip on hover. On hover over an apartment, a tooltip appears with brief info: rooms, area, price. Tooltip position is calculated via getBoundingClientRect().

  2. Card on click. A side panel opens with full details: layout, room-by-room area, floor, window view, finishing, and buttons "Book" and "Download PDF". Data is already loaded — no additional AJAX request needed.

  3. Filtering on the chessboard. Above the SVG scheme, there's a filter panel: number of rooms, price range, area range. When the filter changes, JavaScript hides non-matching apartments by reducing their opacity to 0.1. Matching ones remain bright. This works instantly without server requests.

  4. Responsive SVG. On desktop, the SVG takes 100% container width. On mobile devices (<768px), the facade view is unreadable — we use floor-by-floor view where one floor fills the width, or pinch-to-zoom via the panzoom library. The first option is more reliable.

  5. Real-time status updates. When a manager books an apartment in CRM or 1C, the site status must change without reload. We use polling every 30 seconds: an AJAX request returns an array [{svgId, status}], and JavaScript updates colors. With 200 apartments, the JSON response is under 5 KB.

Technical requirements for SVG chessboard - The file must be pure SVG without embedded raster images. - Each apartment element must have a unique identifier in the `data-apartment-id` attribute. - Canvas size: no larger than 2000x2000 px for Retina compatibility. - Default fill colors should be neutral (e.g., #E0E0E0) so that JS can recolor.

Construction Progress: Photo Reports and Cameras

The "Construction Progress" section is mandatory for projects under construction. Infoblock "Photo Reports": each element = one report (date, description, multiple "Photo" property). Sections — buildings. Output — timeline, sorted by DATE_ACTIVE_FROM DESC. Drone video — string property with YouTube/Vimeo URL. Embed via <iframe> with loading="lazy". Webcam — <iframe> with stream from provider (Ivideon, Trassir). Embedded into the complex section template. Template caching is disabled for the camera block; the rest of the page is cached normally.

Mortgage Calculator with Bank Programs

Pure JavaScript. Highload-block "Mortgage Programs": fields BANK_NAME, PROGRAM_NAME, RATE, MIN_DOWNPAYMENT, MAX_TERM, IS_ACTIVE. On the apartment page load — AJAX request or inline JSON with active programs. Annuity payment formula: P = S × (r × (1 + r)^n) / ((1 + r)^n − 1), where S = price minus down payment, r = annual rate / 12 / 100, n = term in months. Interface: select bank → rate and minimum down payment are filled → three sliders (apartment cost automatically filled, down payment, term) → result: monthly payment, overpayment, total. Recalculated on every slider movement. This helps clients save up to $1.8k–2.6k per year by choosing the optimal program.

SEO and Microdata

Meta templates via infoblock settings:

  • Title: Buy an apartment in #SECTION_NAME# — #ELEMENT_NAME#, from #PROPERTY_PRICE# $
  • Description: #PROPERTY_ROOMS#-room apartment #PROPERTY_AREA_TOTAL# m² on floor #PROPERTY_FLOOR# in #SECTION_NAME#. Developer #PROPERTY_DEVELOPER#.

Microdata — Schema.org Residence for the complex and Offer for the apartment:

{
  "@context": "https://schema.org",
  "@type": "Residence",
  "name": "Residential Complex \"Solnechny\"",
  "address": "Moscow, Stroiteley St., 15",
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 55.75,
    "longitude": 37.61
  },
  "makesOffer": [
    {
      "@type": "Offer",
      "name": "2-room apartment, 58.3 m², floor 5",
      "price": "7200000",
      "priceCurrency": "USD",
      "availability": "https://schema.org/InStock"
    }
  ]
}

What's Included in Turnkey Developer Website Development

  • Analytics and chessboard prototyping
  • Infoblock and HL-block structure design
  • Integration with 1C and CRM (Bitrix24)
  • Mortgage calculator and booking form
  • PDF layout generation
  • Adaptive chessboard layout
  • Microdata markup and SEO templates
  • Staff training on site management
  • One month of post-release support

Stages and Timelines

Project Scale Timeline
One residential complex, 1-2 buildings, up to 200 apartments, basic chessboard 1-4 weeks
2-5 complexes, chessboard + construction progress + mortgage calculator + CRM 5-8 weeks
Developer portal, 10+ complexes, 1C integration, PDF, personal account 8-12 weeks

Timelines assume ready SVG chessboard files with correct data-apartment-id markup. If SVG needs to be created from scratch — add 1-2 weeks per building.

Development cost is calculated individually based on the scope of integrations. Request a consultation — we'll estimate your project in 1 day. Get a developer website developed with guaranteed results.