Block · Bookings and scheduling
Booking calendar
Adds time slots attached to whatever people book (a room, a coach, a class type, a court) and reservations against them. People pick a day, see places left and book; they can cancel their own upcoming bookings. Staff manage times on a week calendar and book people in by hand. Rules refuse a full slot, a slot that has started, two overlapping bookings for the same person, and two overlapping slots for the same resource.
use_template { slug: "booking-calendar" } adds
- Tables
- slot, reservation
- Components
- SlotPicker, MyReservations
- Pages
- /book, /my-bookings, /time-slots, /reservations
- Workflows
- reservation-count, reservation-cancel-request, reservation-free-places, slot-organisation
- Rules
- 3 on slot, 3 on reservation
What it adds to your app
Tables slot and reservation. SlotPicker and MyReservations components with their pages. Staff week calendar and reservations list. Workflows that keep places left up to date.
Tables
slottitle, resource_id, starts_at, ends_at, capacity, booked, status, note, …reservationslot_id, booker_id, seats, status, cancel_request, note
Pages
/bookBook (‹booker_role›)/my-bookingsMy bookings (‹booker_role›)/time-slotsTime slots (@staff)/reservationsReservations (@staff)
Workflows
reservation-countCount booked places on the time slot. On reservation createdreservation-cancel-requestCancel a booking when its person asks. On reservation updatedreservation-free-placesFree the places when a booking is cancelled. On reservation updatedslot-organisationGive each time slot the organisation of what is booked. On slot created
Components
SlotPickerPick a day and book an open time slot, with places left and a seat countMyReservationsThe signed-in person's upcoming bookings with cancel, and their history
Rules on every write
slotA time slot ends after it starts and holds 1 to 500 people.slotThat overlaps another time for the same resource.slotA time slot belongs to the organisation of what is booked.reservationThat time is full.reservationYou already have a booking at that time.reservationYou can cancel a booking, not change it.
Where it attaches
Params point the template at your own tables and roles. Leave out the ones with defaults; a wrong one is refused with the options your app has.
| Param | What it is | Example |
|---|---|---|
attach_to | The table of things people book time with (rooms, coaches, courts, services). | room |
booker_role | The role whose people make bookings (their own table is the booker). Optional. | member |
org_field | Optional: the ref on that table naming its organisation (from organisations-and-teams). Time slots then belong to that organisation and only its members see and book them. Optional. | organisation_id |
Use with your coding agent
- Connect the Appbricx MCP server to Claude Code, Cursor or any MCP client (quickstart).
- Paste the prompt. The agent reads the template, previews the merge with dry_run and shows you the diff.
- It applies to dev. Check it, then deploy when you are happy.
Add the Booking calendar template (slug "booking-calendar") to my Appbricx project. Read it with get_template, run use_template with dry_run first and show me the diff, then apply it. Ask me where it attaches if you can't tell from my contract (attach_to: what is booked; booker_role: who books; org_field: organisation (optional)).{
"tool": "use_template",
"arguments": {
"slug": "booking-calendar",
"project_id": "<your project id>",
"params": {
"attach_to": "room",
"booker_role": "member",
"org_field": "organisation_id"
},
"dry_run": true
}
}appbricx templates use booking-calendar --param attach_to=room --param booker_role=member --param org_field=organisation_id --dry-runGoes well with
Studio Bookings
App. Class booking for a yoga and pilates studio: members book in two taps, instructors run the schedule.
memberinstructorsessionbookingClassScheduleBooking confirmation and reminder
Workflow. Emails a confirmation when a booking is made and a reminder the day before it starts.
‹booking›.reminder_sent_atbooking-confirmationbooking-reminderOrganisations and teams
Block. Let people create organisations, form teams, invite colleagues by email and give them owner, admin or member roles.
organisationteammembershipinvitation‹attach_to›.organisation_id