Bakery website development using 1C-Bitrix

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    747
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    976

Bakery Website Development on 1C-Bitrix

A bakery website operates in two modes simultaneously. First — product showcase with delivery order capability for bread and pastry. Second — custom cake configurator where customers assemble a cake from components and get cost calculation. These are fundamentally different scenarios, and site architecture must serve both without conflicts.

On 1C-Bitrix the first scenario is covered by trade catalog with sale module. The second requires custom mechanics on Highload-blocks and components. We'll cover both, focusing on the configurator.

Product Catalog

Bakery assortment is divided into infoblock sections: bread, sweet pastry, puff pastry, confectionery, seasonal menu. Each element is a trade catalog product with expanded property set.

Element properties:

  • Composition — text field with complete ingredient list (legal requirement)
  • Allergens — multiple reference property: gluten, milk, eggs, nuts, soy (displayed with icons and tooltips)
  • KBZU — four numeric properties: calories, protein, fat, carbs per 100g
  • Weight — numeric property in grams
  • Shelf life — string ("24 hours", "72 hours", "5 days")
  • Availability — list property: in stock / by order / out of stock. Updated manually or via accounting system integration

For variable products (sliced and whole bread, croissants with different fillings) trade offers (SKU) are used. Each offer — own price, weight, photo.

Catalog filtering: by section, allergens (exclude gluten-containing), calorie range. CIBlockSmartFilter smart index provides instant filtering. For bakery with 50-150 positions this is more than sufficient.

Custom Cake Configurator

Customer assembles cake by parameters, sees visualization and final price, places order with desired ready date. This is the site's most complex component.

Configurator data architecture — three Highload-blocks:

HL-block "Cake Components":

Field Type Example Values
UF_TYPE List base / filling / cream / decor
UF_NAME String Vanilla sponge, Chocolate ganache, Fondant
UF_PRICE_PER_KG Number Cost per kg (for base, filling, cream)
UF_PRICE_FIXED Number Fixed cost (for decor)
UF_IMAGE File Preview image
UF_LAYER_IMAGE File Layer image for visualization
UF_COMPATIBLE String JSON array of compatible IDs (not all creams suit all bases)
UF_ALLERGENS List (multiple) Component allergens
UF_SORT Number Sorting in interface

HL-block "Shapes and Sizes":

Field Type Examples
UF_SHAPE List round / square / rectangle / heart
UF_TIERS Integer Number of tiers (1, 2, 3)
UF_WEIGHT_MIN Number Minimum weight in kg
UF_WEIGHT_MAX Number Maximum weight in kg
UF_WEIGHT_STEP Number Step (0.5 kg)
UF_MULTIPLIER Number Coefficient to base price (two-tier = 1.3)

HL-block "Cake Orders":

Field Type Purpose
UF_CONFIG_JSON Text Complete cake configuration in JSON
UF_WEIGHT Number Final weight
UF_PRICE Number Calculated cost
UF_ORDER_ID Integer Link to sale order
UF_DESIRED_DATE Date Desired ready date
UF_STATUS List new / confirmed / in_production / ready / delivered
UF_COMMENT Text Customer wishes (inscription, special requirements)

Configurator step-by-step interface:

  1. Shape and size — customer selects shape (round, square, heart), tier count, weight via slider. For multi-tier cakes weight is auto-distributed (lower — 60%, upper — 40% for two-tier)

  2. Base — selecting cake layer for each tier separately. Cards with photo, name, allergens. On selection, visualization updates — cake layer changes color/texture

  3. Filling — selecting from options compatible with base (filtered by UF_COMPATIBLE). Chocolate ganache compatible with sponge and brownie, but not honey cakes — API returns only allowed combinations

  4. Cream — similar to filling, with compatibility check

  5. Decor — multiple choice: fondant, berries, chocolate decor, edible print, fresh flowers. Each decor item has fixed cost. Inscription on cake — text field with 50 character limit, adds fixed amount

  6. Total — visualization of assembled cake (layer overlay via CSS position: absolute), full composition, allergens (combined from selected components), KBZU, final price

Cost calculation formula:

Price = (Σ cost_per_kg_component × weight) × tier_multiplier + Σ fixed_decor + rush_surcharge

Rush surcharge: less than 48 hours ready date — +30%, less than 24 hours — order unavailable (minimum production time). This limitation is enforced at form validation level — UF_DESIRED_DATE checked against current date considering bakery's days off.

All calculation is server-side via AJAX controller. Client JS sends configuration, controller calculates price and returns result. This prevents browser-side price manipulation.

After confirmation, configuration saves in "Cake Orders" HL-block, order created in sale with special payer type "Custom Cake". Administrator gets notification, confirms order (status → confirmed), then payment link sent to customer.

Online Pastry Order with Delivery

Standard e-commerce implementation on sale: cart, checkout with delivery selection (courier / pickup), online or COD payment. Special feature — delivery time windows. Fresh pastry can't wait all day. Delivery service configured with intervals: 08:00–10:00, 10:00–12:00, 12:00–14:00. Customer selects convenient window on checkout.

Minimum order sum for free delivery set in delivery service properties. Below threshold — paid delivery, cost calculated by sale.delivery handler.

Photo Gallery and Recipes

Gallery — infoblock with sections: baking process, custom cakes, bakery interior. Each element — photo with description. Homepage shows rotator of baker's latest works.

Recipe blog — infoblock with SEO-optimized articles. Format: ingredient list (checklist), step-by-step instruction with photos, KBZU result. Link to catalog products — "our whole wheat flour perfect for this recipe" with cart add button. Works for SEO traffic and increases average order.

Technical Implementation

Stage What's done Timeline
Prototype Configurator wireframes, infoblock structure 3–5 days
Design Configurator UI, catalog, product card 5–7 days
Markup Responsive markup, configurator animations 5–7 days
Backend HL-blocks, calculation controllers, sale integration 7–10 days
Content Catalog population, photo shoot 3–5 days
Testing Calculation check, load, mobile devices 3–4 days

Composite cache enabled for catalog and blog. Cake configurator fully AJAX — not cached. Product cards contain Schema.org Product microdata with nutrition information (NutritionInformation).