ConvexBooking

Real-time booking system forConvex

Open-source booking for rooms, people, and equipment, with live availability, flexible durations, and atomic resource reservations.

Read the Docs

Try Booking

Experience the customer-facing booking flow

Admin Dashboard

Manage resources, schedules, and bookings

Features

Real-time Presence

Show other visitors’ selections while final booking writes check inventory.

Multi-Duration

Support for flexible booking lengths (30min, 1h, 2h, 5h) with intelligent conflict detection.

O(1) Queries

Availability checks scale to millions of bookings using discrete time buckets.

ACID Transactions

Atomic booking mutations backed by Convex transactions.

Multi-Resource

Book rooms, equipment, or people. Resources can be bundled or standalone.

Flexible Schedules

Define weekly windows and date overrides. Buffer settings require host logic.

Architecture

96-Slot Quantum

Time normalized into 15-minute chunks (0-95 per day). Fast integer math, predictable memory.

Slot 0 = 00:00, Slot 56 = 14:00

Presence System

10-second heartbeat timeout with batched updates. Slots auto-release when users leave.

5s heartbeat interval

Frontend Derivation

Stable booking queries + volatile presence queries merged client-side for O(1) cache invalidation.

No query thrashing

Tech Stack

ConvexConvexNext.jsNext.js 16ReactReact 19TypeScriptTypeScriptshadcn/uiTailwind CSSTailwind CSSConvex AuthConvex AuthResendResend

About Me

Daniel Finke

Daniel Finke

From crafting beats as a musician and producer to building workflows in Airtable and no-code tools, my journey has been one of constant learning. Now I'm exploring fullstack development with Convex, curious to see how far I can push myself and picking up something new every day. This booking component is my first contribution to the open-source community — still a work in progress, so if you spot bugs or have ideas, I'd genuinely love to hear from you.