Week calendar
/schedule/fullcalendarEvery host's open slots on a FullCalendar week. Click a slot to open its page and book it.
Meet Me is a meeting scheduler we are building on this Drupal site. A host says what can be booked with them (meeting types) and when (schedules that turn into slots); a visitor picks a type, then a time; every booker is filed as a contact in the CRM. Everything below is sample data, so book, cancel and try to double-book freely.
Intro call
with Demo host (sample host)
A replica of a slot page that books into sample data in your browser. The real slot pages are one click away on the calendar.
No account needed: a name and an email are enough. These pages are public, and every booking made on them sends two emails and creates or finds a CRM contact.
Every host's open slots on a FullCalendar week. Click a slot to open its page and book it.
One window of time. Pick a meeting type, then a time: the slot is cut into times of that type's length, and a time any booking of the host overlaps is gone.
The public page of the contrib module Booking Calendar, for a 30-minute Discovery call. Its hours also arrive here as slots, through the third kind of schedule.
The link in the confirmation email: the booking, its meeting type and host, and a button to cancel. There is no account to log in to.
Every account can host. Log in as the demo host with drush @ddev.meetme uli --name=host, then set up what can be booked and when.
Meeting types, schedules, bookings and the next 20 slots of one host, each with its add button.
Three kinds of schedule: Regular hours (a week table with closed dates), Repeating session (every other Tuesday, first Monday) and hours from a Booking Calendar. Each one makes slots eight weeks ahead.
The glue is our module crm_meeting. Administrators can follow a booking from the form to the contact it was filed under; log in with drush @ddev.meetme uli.
10:02:07
A type, then a time
The visitor picks a meeting type and one of its open times, and types a name and an email.
10:02:11
Re-checked under the host's lock
One booking per host at a time, so two visitors cannot take the same time.
10:02:11
Filed under a contact
The contact the booker's account is mapped to, else a person with that email, else a new person. An existing contact is never changed from the public form.
10:02:12
Two emails
The booker gets their manage link, the host gets the booking.
later
Canceled from the link
The time opens again and both are emailed. The booking stays on the contact's Meetings table.
Test Booker, with the Meetings table: time, meeting type, host and status of every booking filed under it.
All bookings of all hosts, each with the contact it was filed under.
Intro call, Office hours and Consultation, by host. A type that was ever booked cannot be deleted, only turned off.
Booking Calendar's own settings for the Team calendar: weekly hours, blocked dates and the Discovery call type, which schedule 4 turns into slots here.
The rules from the mantra_booking README, as they stand today. The gaps are on our list.
| Rule | Status | What people see |
|---|---|---|
| A slot is cut into times of the chosen meeting type's length. | Enforced | An hour-long type in 09:00–12:00 offers 09:00, 10:00 and 11:00. |
| A time closes when any confirmed booking of the host overlaps it. | Enforced | Of any type, in any slot: a 30-minute booking at 09:30 closes the 09:00 hour. |
| A host's slots never overlap. | Enforced | The slot form refuses to save; the schedule generator leaves the time out and reports it. |
| A host cannot book their own slot. | Enforced | The slot page tells them to share it instead. |
| Dragging a slot on the calendar is checked for overlaps. | Known gap | Not yet: the drag saves through FullCalendar and skips the slot form's check. |
| Times are shown in the visitor's own time zone. | Known gap | Not yet: visitors see the site's zone, America/Los_Angeles. |
| An hour-long meeting can start every 30 minutes. | Known gap | Not yet: times step by the meeting type's own length. |
Four weeks of work on mantra_booking, its two submodules and crm_meeting.
Oct 1
Site installed
Slots, a booking form, two emails, and every booker filed in the CRM by crm_meeting.
Oct 2
Meeting types
Name, length, location and description per host. A slot offers some or all of them; the visitor picks a type, then a time.
Oct 2
Schedules that make slots
Regular hours and, in mantra_booking_recur, repeating sessions on Recurring Dates. Changing the hours regenerates the unbooked slots; a booked one is never moved.
Oct 5
Hours from Booking Calendar
mantra_booking_calendar reads a Booking Calendar's hours and its bookings, so a time booked on either side is gone on both.
Oct 28
This page
Built in Drupal Canvas from the Singularity theme's components, through the same canvas_tools operations the drupal-meetme MCP server offers an agent.
The open items from testing, as the questions that led to them.
One demo host, three meeting types, three schedules and a handful of bookers in the CRM: all sample data, so nothing you do here reaches anyone.