---
name: bijection-booking
description: "Evaluate and integrate the Booking component with Bijection."
---

# Booking

A booking component for Bijection.

- Package: @bijectionhq/booking
- Category: Database & Backend
- Status: Preview
- License: Apache-2.0
- Bijection source (repository access required): https://github.com/bijectionhq/booking/tree/238dc6eee0e202e9bb1a20800cac2f49bd1ed727
- Upstream: https://github.com/Finchmedia/booking-component/tree/71eb30ad228d5654f668cdd3c1ae0869b08326b4
- Documentation: https://docs.bijection.com/components/using
- Directory: https://bijection.com/components/booking

## Get the source

Bijection repository access is required. Request access at https://bijection.com/contact.

```sh
git clone https://github.com/bijectionhq/booking.git
cd booking
git checkout 238dc6eee0e202e9bb1a20800cac2f49bd1ed727
```

## Before using this component

Read the package README at the recorded revision for setup, dependencies, and API examples. Upstream documentation describes the original package and may differ from the Bijection adaptation. This is a source candidate for evaluation. Catalog inclusion does not establish npm availability or runtime qualification. Check compatibility with your SDK and deployment before adoption. External providers run their own compute.

## Integration workflow

1. Read the source README and package manifest at the recorded revision.
2. Confirm the required SDK, dependency availability, and runtime compatibility.
3. Follow the component's documented setup and configuration. Never invent an npm install command from a catalog package name.
4. Keep credentials in the project's existing secret store.
5. Follow the project's execution rules for verification and report what was actually checked.

## Original upstream skill

The following guidance describes @mrfinch/booking. Its installation commands and APIs refer to the upstream package. Evaluate compatibility with the Bijection source separately.


> Agents: read this skill fully before writing code that uses ConvexBooking. Follow the installation and configuration steps exactly.

# ConvexBooking

## Instructions

A Convex component for booking rooms, people and equipment. It manages timezone-aware availability, prevents conflicting bookings and reserves several resources atomically. It supports equipment pools, confirmation, cancellation, rescheduling and token-based booking management. Use the backend API for custom interfaces or the included React Booker for single-resource booking flows.

### Installation

```bash
npm install @mrfinch/booking
```

Current npm version: `@mrfinch/booking@0.5.1`

## Use cases

- Prevent overlapping bookings for meeting rooms, studios, and other exclusive resources.
- Manage equipment rental pools with quantity-based availability for interchangeable items.
- Coordinate appointments that require several resources, such as a staff member, room, and equipment, in one atomic booking.
- Add a public booking page with date selection, available time slots, and contact capture using the included React Booker.
- Let customers cancel or reschedule through token-based management links, with optional email notifications through Resend.

## How it works

Register the component in `convex/convex.config.ts` with `app.use(booking)`, then expose booking operations through your own Convex functions. Browser clients call these host functions, which check authorization and your booking policies before delegating to `components.booking.*`. The component keeps booking records and inventory in its own tables and uses transactional checks to prevent conflicting reservations.

Configure resources and schedules with weekly hours, date overrides and IANA timezones, then link resources to the event types that define how they can be booked. Inventory is tracked on a 15-minute grid. Equipment pools and bookings that need several resources use the multi-resource API, which reserves every requested resource atomically.

Bookings, moves and confirmations check one set of rules: the event type and its resources exist, are active, are linked to each other and belong to the event type's organization. Expected failures throw `ConvexError({ code, message })` with documented codes, so your host functions can map them to their own messages. Read-only maintenance audits list stored data that needs attention after an upgrade.

For the React UI, wrap your page in `BookingProvider` with your host's public API and render `<Booker />`. It handles date, duration and slot selection, contact details and confirmation for one exclusive resource, and shows booking errors itself. `onBookingComplete` receives the booking, including its UID, so you can link to your booking management pages.

The backend supports confirmation, cancellation and atomic rescheduling. Token-based management links let customers cancel or move their bookings. Your host controls booking policies and the expiry of provisional bookings, and optional Resend integration adds email notifications.


## When NOT to use

- When a simpler built-in solution exists for your specific use case
- If you are not using Convex as your backend
- When the functionality provided by ConvexBooking is not needed

## Resources

- [npm package](https://www.npmjs.com/package/@mrfinch/booking)
- [GitHub repository](https://github.com/Finchmedia/booking-component)
- [Live demo](https://convexbooking.dev)
- [Convex Components Directory](https://www.convex.dev/components/mrfinch/booking)
- [Convex documentation](https://docs.convex.dev)