Closes #1985

/claim #1985

Summary

Implements a complete BigBlueButton (BBB) app-store integration, allowing Cal.com users to connect their self-hosted BBB server and automatically create meeting rooms for bookings.

Key design decisions

No new dependencies — BBB uses a simple query-string + checksum API. All HTTP is done with native fetch, XML parsing uses a tiny regex-based parser, and crypto uses Node.js built-in createHash. Zero new npm packages.

Checksum correctness — The buildBBBUrl function computes hash(apiName + queryString + sharedSecret) exactly per the BBB API security model, supporting sha1/sha256/sha384/sha512.

fullName in join URL — The BBB join endpoint requires fullName to be present in the checksum input. Our getBBBJoinUrl always includes it. (Competing PR #27958 was flagged by cubic for missing this.)

moderatorPW in end API — The BBB end endpoint requires the moderator password. We store attendeePW:moderatorPW in bookingRef.meetingPassword so the split is available at update/delete time. (Competing PR #27958 was flagged by cubic for passing empty password to end.)

Server-side validation — The /save endpoint validates that the BBB server is reachable and returns API version >= 2.0 before persisting credentials. Users get a clear error if the URL or secret is wrong.

Files changed

File Purpose
packages/app-store/bigbluebutton/lib/bbbapi.ts Core BBB API client
packages/app-store/bigbluebutton/lib/bbbapi.test.ts 14 unit tests
packages/app-store/bigbluebutton/lib/VideoApiAdapter.ts Cal.com VideoApiAdapter
packages/app-store/bigbluebutton/zod.ts Credential schema
packages/app-store/bigbluebutton/_metadata.ts App metadata
packages/app-store/bigbluebutton/api/add.ts Install endpoint
packages/app-store/bigbluebutton/api/save.ts Save + validate credentials
packages/app-store/bigbluebutton/pages/setup/index.tsx Setup form
apps/web/components/apps/bigbluebutton/Setup.tsx Web setup component
Generated files Updated metadata/adapter registries

Translation keys

New keys added to apps/web/public/static/locales/en/common.json (see i18n-keys.md):

  • bigbluebutton_connected
  • bigbluebutton_setup
  • bigbluebutton_setup_description
  • bigbluebutton_server_url + _hint
  • bigbluebutton_shared_secret + _placeholder + _hint
  • bigbluebutton_checksum_algorithm
  • bigbluebutton_setup_help
  • bigbluebutton_api_docs

How to test

  1. Set up a BigBlueButton server or use a test instance
  2. Get your server URL and shared secret: sudo bbb-conf --secret
  3. Install the BigBlueButton app from the Cal.com app store
  4. Enter your server URL and shared secret in the setup page
  5. Create an event type and select BigBlueButton as the conferencing option
  6. Book a meeting — a BBB room will be created automatically
  7. Both host and attendee receive join links in their confirmation emails

Claim

Total prize pool $50
Total paid $0
Status Pending
Submitted February 18, 2026
Last updated February 18, 2026

Contributors

KI

kiro-dev28

@kiro-dev28

100%

Sponsors

CA

Cal.com, Inc.

@cal

$50