Investigate Bookable Calendar module

Changed

Context

I want to create a calendly clone, where I can set up an availability schedule and let people book slots.

The UX can be simple or complex, depending on needs.

A service department with regular hours needs a simple way to set up their year but also needs to set up holidays or closures.

A consultant may have limited availability and sets it per week.

The idea was to use different modules when appropriate for different use cases, and then use those settings to build a normalized schedule so that booking can work the same way.

However, Bookable Calendar provides a lot of what I'm looking for.

Questions

Can Bookable Calendar provide a foundation for the kinds of customizations I'm doing, so I can use it's structure instead of my own?

How does it handle adjustments to the schedule?

What does the number of slots field on Calendar Opening do?

Bookable Calendar booking settings

Content Entities

Bookable Calendar: Independent schedules.

Calendar Opening: Recurring schedule items.
Has a multivalue date field, as well as recurring options.

Booking Contact: Record of contact booking (email, party size, date).
Add fields to show on the booking form.

Opening Instances: Available slot.
Are these created by both the multivalue date field and recurring rules?

Date field

Uses Smart DateView Smart Date on Drupal.org to define opening instances, with recurring rules.

Bookable calendar recurring dates field

Differences

Bookable Calendar has a set schedule of openings. Calendly has availability times, and meeting types can start any time within and have different lengths, chosen by the user.

Booking settings

Configure things like how far out to allow booking.

Expanding instances

Smart date limit hardcoded to 13 months in base field.

Instances expanded by smart date cron.

https://www.drupal.org/project/bookable_calendar/issues/3382622

Done

Install and configure bookable calendar with some demo content.

I was able to set up 3 different schedules and a combined booking calendar.