Coworking 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

Coworking Space Website Development on 1C-Bitrix

A coworking space makes money on occupancy. An empty desk at 2 PM is lost revenue that can never be recovered. A coworking website must sell time: show spaces, let users choose a free slot, accept payment, and issue a QR code for entry — all without admin involvement. On 1C-Bitrix, this is a combination of the sale module, Highload blocks for bookings, and access control system integration.

Space Catalog

The "Spaces" information block with sections by type:

  • Hot desk — any available seat in shared area
  • Fixed desk — assigned workspace
  • Meeting room — room for 4-12 people
  • Private office — separate office for a team
  • Event hall — for events and workshops

Element properties:

  • Capacity (number): number of workplaces
  • Area (number): m²
  • Amenities (multiple list): monitor, whiteboard, projector, video conferencing, printer, coffee machine
  • Floor (list): binding to building plan
  • Photos (multiple files): gallery from different angles
  • 3D Tour (string): Matterport embed link
  • Minimum Booking Duration (number): in hours (1 for meeting room, 8 for private office)

On space card — photo slider, amenities table, "Book" button leading to occupancy calendar.

Tariffs and Subscriptions

A coworking pricing structure is more complex than it appears. The same hot desk can be sold hourly (one-time visit), daily, or as monthly subscription. Meeting room — only hourly. Private office — monthly.

Implementation via sale module products with trade offers (SKU):

Product "Hot desk" has trade offers:

  • 1 hour
  • 1 day (8 hours)
  • 10 days/month
  • Unlimited/month

Product "Meeting Room Baikal" has offers:

  • 1 hour
  • 3 hours
  • Full day

Each trade offer has its own price in catalog. Subscriptions (10 days, unlimited) are implemented as memberships: after payment, user is assigned to group "Hot Desk Subscription 10" with expiration date. Agent (CAgent) daily checks expired subscriptions and moves users to "No Subscription" group.

Virtual Tour

Matterport 3D tour is embedded via iframe on separate page and in space cards. For each floor — own tour with points of interest (hotspots): hovering on workspace shows its number, amenities, and booking button.

Alternative to Matterport is 360° panoramic photos collected in Pannellum.js (open-source). Less expensive but without the "walking" effect through space.

Community Section

"Residents" information block — company and freelancer cards working in coworking (with consent). Properties: logo, name, business area, website. Shows active community and helps networking.

"Events" information block — upcoming meetups, workshops, networking breakfasts. Registration form integration: on signup, creates element in "Event Registrations" Highload block with email confirmation.

Booking with Occupancy Calendar and Access Control: Deep-Dive

Booking is the heart of coworking website. Standard Bitrix modules (cart, checkout) are designed for product e-commerce, but here we need to sell time slots with occupancy visualization. Requires custom development on top of sale module.

Bookings Highload Block

The central entity is "Bookings" Highload block (BookingTable):

Field Type Purpose
UF_SPACE_ID Binding Space from information block
UF_USER_ID Number Who booked
UF_DATE Date Booking date
UF_TIME_FROM String Start time (HH:MM)
UF_TIME_TO String End time (HH:MM)
UF_ORDER_ID Number Order ID in sale module
UF_STATUS List Awaiting payment / paid / cancelled / completed
UF_QR_TOKEN String Unique token for QR code
UF_CHECKIN DateTime Actual entry time via access control
UF_CHECKOUT DateTime Actual exit time

Indexes: composite index by UF_SPACE_ID + UF_DATE + UF_STATUS for fast occupancy queries.

Occupancy Calendar

Frontend component shows calendar for next week. For meeting rooms and hot desk — hourly grid (8:00 to 22:00, 14 one-hour slots). For private office — daily (free/occupied each day).

Data loaded via single AJAX request: D7 controller selects all bookings for given space for requested period with "Paid" and "Awaiting payment" statuses. On client, slots are colored: green — free, red — booked, yellow — awaiting payment (reserved for 15 minutes).

User clicks free slots (can select multiple in sequence), clicks "Book". If authorized and has active subscription covering this booking type — booking created instantly with "Paid" status. If no subscription — order formed in sale module, user proceeds to payment (Yandex.Kassa, CloudPayments).

Conflict Prevention

When two users simultaneously book same slot, optimistic locking is used: before creating record, controller checks no overlaps and uses DB transaction. If slot already booked — returns error, frontend refreshes calendar.

Additionally: "Awaiting payment" status slots automatically cancelled after 15 minutes by agent. This prevents popular meeting rooms being blocked by unpaid bookings.

Access Control Integration

After successful payment, system generates unique UF_QR_TOKEN (UUID v4) and sends QR code via email and to personal account. When QR is scanned on access control reader:

  1. Reader sends HTTP request to endpoint /api/skud/verify/
  2. Controller verifies token: exists, status "Paid", current time within UF_TIME_FROM – UF_TIME_TO with ±15 min tolerance
  3. On success returns {"access": true}, access control opens turnstile/door
  4. Records UF_CHECKIN — actual entry time

Protocol depends on access control system model. For ZKTeco or Sigur-based systems — REST API. For Bolid "Orion" — integration via intermediate Python server translating HTTP requests to Orion protocol.

For "Unlimited" subscriptions, QR code generated once for entire period and bound to user, not specific booking.

Tenant Personal Account

Tabs:

  • My Bookings — upcoming and past, QR codes for active
  • Subscription — type, remaining days/visits, expiration date, renewal
  • History — actual visits (check-in/check-out from access control), invoices
  • Favorites — frequently booked spaces for quick access

Implementation Timeline

Stage Content Timeline
Analysis Space catalog, tariff matrix, access control requirements 5–7 days
Design Prototypes, Highload ER-schema, booking scenarios 7–10 days
UI Design Mockups (catalog, calendar, account), mobile responsive 10–12 days
Catalog & Tariffs Information blocks, sale products, trade offers 7–10 days
Booking System Highload, calendar, payment, conflict prevention 14–18 days
Access Control Integration API endpoint, QR generation, equipment testing 7–10 days
Account & Community Personal account, residents, events 7–10 days
Testing & Launch Load testing, access control commissioning 5–7 days

Total Timeline — 9–12 weeks. Access control integration depends on equipment model: if system supports REST API out-of-box, 7 days. If intermediate server needed — up to 10 days. Equipment must be installed and configured before integration stage begins.