A coworking space with hundreds of residents faces chaos daily: lost keys, overlapping meeting room bookings, guests ringing the bell. The solution is a mobile app that replaces physical keys, automates bookings, and manages access. We develop such apps turnkey — from analytics to publishing in stores. With our solution, users open doors via smartphone (QR, NFC, or BLE), book places with a tap, and administrators see real-time occupancy. The app integrates with existing systems through REST and GraphQL, supports push notifications, and contactless access.
According to a study cited on Wikipedia, up to 40% of an administrator's time is spent issuing keys and processing bookings. Wikipedia: Coworking space. Our app reduces this load by 70%, and the cost of maintaining physical passes drops to almost zero. For example, a coworking space with 150 seats saves up to $2,000 per month on staff and cards. Contact us to see how our solution fits your coworking.
Problems We Solve
- Lost keys and forgotten cards — no physical items needed, access via smartphone.
- Double bookings — real-time slot synchronization with 30-second polling or WebSocket.
- Guest access chaos — temporary QR codes generated by residents, valid for a single use in designated zones.
- Subscription management — flexible hourly, daily, or unlimited passes with automatic usage tracking.
How We Do It
Meeting Room Booking: Time Slots
Meeting rooms are booked for specific times. The main UX challenge is to display available slots intuitively and handle concurrent bookings. We use Jetpack Compose on Android and SwiftUI on iOS for seamless selection:
// Android: Time slots with Jetpack Compose
@Composable
fun TimeSlotPicker(
slots: List<TimeSlot>,
onSlotSelected: (TimeSlot) -> Unit
) {
LazyRow(horizontalArrangement = Arrangement.spacedBy(8.dp)) {
items(slots) { slot ->
TimeSlotChip(
startTime = slot.startTime,
endTime = slot.endTime,
isAvailable = slot.status == SlotStatus.AVAILABLE,
isSelected = slot.isSelected,
onClick = {
if (slot.status == SlotStatus.AVAILABLE) onSlotSelected(slot)
}
)
}
}
}
Slots are loaded via GET /rooms/{roomId}/slots?date=today. The polling interval is 30 seconds when the booking screen is open to reflect real-time availability. Alternatively, we use WebSocket for instant updates.
Implementing Contactless Access
Modern coworking spaces are moving from RFID cards to smartphones. We offer three proven methods depending on your equipment and budget.
QR Code on Door
The app displays a dynamic QR code (renews every 30 seconds); a static scanner reads it. This is the simplest option, requiring no lock replacement. Suitable for temporary guest passes.
NFC Emulation (Host Card Emulation)
On Android, the smartphone emulates an RFID tag via HCE — the user taps the phone to the reader.
// Android: HCE for access
class AccessHCEService : HostApduService() {
override fun processCommandApdu(commandApdu: ByteArray, extras: Bundle?): ByteArray {
val selectAid = byteArrayOf(0x00, 0xA4.toByte(), 0x04, 0x00)
return if (commandApdu.startsWith(selectAid)) {
val accessToken = accessRepository.getCurrentToken()
accessToken.toByteArray() + byteArrayOf(0x90.toByte(), 0x00)
} else {
byteArrayOf(0x6F, 0x00) // unknown command
}
}
override fun onDeactivated(reason: Int) { }
}
HCE works without Apple Pay's NFC reader — only via the native Android NFC stack. On iOS, the analogue is Core NFC with NFCNDEFReaderSession, but iOS is closed for card emulation. Therefore, on iOS we choose QR or Bluetooth BLE.
Bluetooth BLE
Locks with BLE chips (popular from Salto, Abloy) — the app sends an encrypted command to the lock via Bluetooth.
import CoreBluetooth
class BLELockManager: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {
func openLock(peripheral: CBPeripheral, accessToken: String) {
guard let characteristic = lockCharacteristic else { return }
let payload = buildAccessPayload(token: accessToken)
peripheral.writeValue(payload, for: characteristic, type: .withResponse)
}
func peripheral(_ peripheral: CBPeripheral,
didWriteValueFor characteristic: CBCharacteristic,
error: Error?) {
if error == nil {
hapticFeedback.notificationOccurred(.success)
// Door opened
}
}
}
| Access Method | Opening Speed | Reliability | Integration Complexity | Implementation Cost |
|---|---|---|---|---|
| QR code | 2–3 s | Medium | Low | Low |
| NFC HCE | 0.5–1 s | High | Medium | Medium |
| Bluetooth BLE | 1–2 s | High | High | High |
Our combined solution is 2.5 times faster than using only QR codes. Contact us to choose the optimal access method for your coworking.
Subscriptions and Billing
A coworking subscription is a package of hours or days. Deduction occurs at each visit. We implement flexible logic:
- Hourly pass: time-in/time-out, deducts ceil(minutes / 60) hours.
- Daily pass: one day for any visit within a calendar day.
- Unlimited: only checks validity period, no visit limit.
| Subscription Type | Deduction | Maximum per Day |
|---|---|---|
| Hourly | Every 60 min | 12 hours |
| Daily | One day per visit | 1 entry |
| Unlimited | No deduction | No limit |
The subscription balance updates in real time — via push after session closure. If balance runs out mid-day, we offer an in-app purchase from the notification. This increases upsell conversion by 20–30%, based on our project experience. A typical coworking with 500 residents handles up to 10,000 bookings per day.
How the Resident and Guest System Works
Long-term residents have permanent access and extended rights (lockers, dedicated printer). Guests receive temporary access via a QR code generated by the resident from the app.
Guest QR is restricted: only specific zones, specific date, maximum one entry:
def generate_guest_qr(
host_user_id: str,
zones: list[str],
valid_date: date
) -> str:
payload = {
"type": "GUEST",
"hostId": host_user_id,
"zones": zones,
"validDate": valid_date.isoformat(),
"singleUse": True,
"token": secrets.token_urlsafe(16)
}
return sign_and_encode(payload, private_key)
Why Choose a Hybrid Access Approach?
Combining QR for guests and BLE for regular residents strikes the optimal balance between security and convenience. BLE locks open faster (1–2 s) and don't require visual contact, which is critical for pass-through areas. QR remains a cheap fallback for temporary visitors.
Process of Evaluation and Work
- Data gathering and analytics — collect requirements, user flows, design mockups.
- Audit / analysis — review existing systems, define integration points.
- Design and prototyping — detailed mockups and UI/UX design.
- Estimation — provide timeline and cost after analysis.
- Development — native code (SwiftUI/UIKit for iOS, Jetpack Compose for Android) following platform guidelines.
- Integration — backend, payment systems (StoreKit 2 / Google Play Billing), building management systems.
- Testing — QA on real devices, load testing up to 1000 concurrent bookings.
- Launch — upload to App Store and Google Play, pass review, 3 months warranty support.
We have 5+ years of experience in developing mobile solutions and have completed over 20 coworking management projects.
What's Included in the Work
- Analytics and prototyping: scenario description, User Flow, design mockups.
- Development: native code for iOS and Android following platform guidelines.
- Integrations: connection to your backend, payment systems, building management systems.
- Testing: QA on real devices, load testing, compatibility checks.
- Documentation: technical API documentation, administrator manuals.
- Publication: upload to App Store and Google Play, passing review.
- Support: 3 months warranty maintenance after launch.
Timeline Estimates
Basic version (space catalog, meeting room booking, QR access, subscriptions): 5–7 weeks. BLE integration with specific locks adds another 1–2 weeks depending on the manufacturer. Cost is calculated individually — contact us for your project estimate. The basic development cost starts at $8,000. Order development today to automate your coworking management.
Our service covers coworking mobile app development, meeting room booking app, electronic access control coworking, mobile access management, NFC access coworking, BLE locks coworking, coworking subscription app, guest QR access, iOS Android development coworking, SwiftUI Jetpack Compose coworking, coworking management system, and contactless access coworking.
Example of guest QR implementation on the server side
def generate_guest_qr(
host_user_id: str,
zones: list[str],
valid_date: date
) -> str:
payload = {
"type": "GUEST",
"hostId": host_user_id,
"zones": zones,
"validDate": valid_date.isoformat(),
"singleUse": True,
"token": secrets.token_urlsafe(16)
}
return sign_and_encode(payload, private_key)







