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:
- Reader sends HTTP request to endpoint
/api/skud/verify/ - Controller verifies token: exists, status "Paid", current time within
UF_TIME_FROM – UF_TIME_TOwith ±15 min tolerance - On success returns
{"access": true}, access control opens turnstile/door - 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.

