Bookable Resources
Bookable Resources lets the people on your site book rooms, lab instruments, vehicles or any other shared resource on a clear timeline calendar. You pick a free slot, fill in a short form, and the booking appears for everyone. Double bookings are impossible. Approvals, recurring bookings, opening hours, email notifications and reminders are there when you need them, as optional submodules. It needs no contributed modules: install it on a plain Drupal site and start booking.
Development of this module is sponsored by Omitsis.
Features
Booking
- A timeline per group. Resources are organised into groups (a building, a department, a lab), and each group gets its own calendar: one row per resource, with day, week and month views. A unified calendar shows every group on a single timeline.
- Book by dragging. Drag across free time to book it, drag a booking to move it to another time or resource, and resize it to change its length. Everything happens in a dialog, without leaving the calendar.
- No overlaps. Two bookings of the same resource can never overlap, whichever way they were made: on the calendar, in the admin form or by import.
- Several days and whole days. A booking can cover several days, each with its own hours, or be marked All day.
- Three ways in. From the calendar, from a standalone booking page, or from a booking form block you can place on any page.
- Booking on behalf of others. A reception desk can book for somebody else and name them as the requester.
- Booking rules. Write the rules for using a resource (or a whole group, or the site) and they are shown where people read them: just above the button.
- My reservations. Each person has a list of their own upcoming bookings, ready to change or cancel.
Privacy and permissions
- "Busy" for everybody else. Decide who sees who booked and why. Without that permission, other people's bookings show only as Busy, with their time and resource.
- Three ready-made roles: Booking requester, Reservation approver and Resource manager, plus fine-grained permissions for everything else.
Optional submodules
- Moderation. Bookings wait for approval before they are confirmed. Approval can be switched on for the whole site, a group or a single resource, each level inheriting from the one above. Statuses and their colours are configurable, approvers can add public and private comments, and every booking keeps a timeline of what happened to it. Pending requests have their own list, with a whole recurring series approved in one go.
- Recurrence. Repeat a booking daily, weekly or monthly until a given date. Later, change or delete just one occurrence, this one and the following ones, or the whole series.
- Schedules. Weekly opening hours for the site, a group or a resource, each level inheriting from the one above. Holidays close the site or a group for the day. Closed hours are shaded on the calendar and cannot be booked. Holidays can be imported from an iCalendar (.ics) file.
- Equipment. Keep a catalogue of equipment (projectors, laptops, video conferencing) that each resource offers and people tick when they book. Retired items are archived, so old bookings keep their history.
- Maintenance. Block a resource for maintenance. The block is drawn as a hatched band on the calendar, so nobody mistakes it for a booking.
- Notifications. Send an email when a booking enters a status, to the requester, to a role, to chosen users or to any address. Subject and body accept tokens, and every email sent is logged.
- Reminders. Email people before their booking starts. The site sets default reminders, and each person can choose their own: 45 minutes, a day, a week before…
- Import and export. Load groups, resources and reservations from CSV. Every row is validated before anything is created, and a re-import updates the rows it already knows instead of duplicating them. Export the catalogue or a filtered list of reservations back to CSV.
- Skins. Three ready-made looks (Amber, Clinical and Terminal), your own colours, and light or dark mode, with a live preview before you save.
- Help. Task-oriented help pages inside the site, linked from the screens they explain.
Built the Drupal way
- Your own fields. Add fields to reservations with Field UI (attendees, a phone number, a cost centre) and choose which ones the booking form asks for. The booking form and the admin form have separate form modes.
- Views everywhere. Every admin list and "My reservations" are Views, with exposed filters, so you can change them like any other view.
- Multilingual. Groups, resources and equipment are translatable, and the calendar speaks the page's language.
- Clean URLs. Group and resource calendars have canonical routes, so Pathauto can give them friendly addresses.
- Themeable. Markup is built from Single Directory Components, and the calendar and dialogs are styled with a handful of CSS custom properties your theme can override.
- Extensible. Documented hooks and decoratable services let developers change how bookings are written, which events the calendar shows and how a booking is summarised.
- Accessible and tested. Keyboard-friendly dialogs and tooltips, and a large automated test suite run on every change.
Use cases
- Meeting rooms in an office or a university.
- Shared instruments in a research lab or a hospital.
- Classrooms, studios, sports courts or a pool of vehicles.
- Any intranet where people need to know what is free and reserve it, with or without someone approving the request.
Post-Installation
- Enable Bookable Resources, plus any submodule you need. Each one can be enabled later.
- Go to Administration » Bookable resources (
/admin/bookable-resources). It is the hub for everything the module does. - Create a group, then add resources to it.
- Give your users one of the three built-in roles, at People » Roles.
- Open the calendars at
/bookable-resourcesand make the first booking.
Optional settings, all under Bookable resources » Configuration: slot length, the range of days shown, the initial view, whether bookings have a title, booking rules and, with the submodules, approval, opening hours, notifications, reminders and the skin. The built-in help (Bookable resources » Help) walks through each of them.
Additional Requirements
- Drupal 11.2 or later. Only core modules: Datetime, Field, Field UI, User and Views.
- The EventCalendar JavaScript library. If it is not installed locally, the module loads it from the jsDelivr CDN and the status report says so. The README explains how to install it with Composer.
- The Help submodule uses league/commonmark, which Composer installs for you.
Recommended modules/libraries
- Pathauto, for friendly calendar addresses such as
/rooms/main-building. - Symfony Mailer Lite or any mail module that sends HTML, for nicely formatted notifications and reminders.
Similar projects
- BAT and BEE are a framework for making any entity bookable, aimed at availability and pricing (hotels, events, rentals) and built on by developers. Bookable Resources is a complete tool for internal resource booking out of the box: calendars, approvals, opening hours and notifications are ready to configure, with no code.
Supporting this Module
This module is developed and maintained by Omitsis. Bug reports, ideas and patches are welcome in the issue queue.
Community Documentation
The module ships with its own help pages, available inside the site once the Help submodule is enabled. The README covers installation and the EventCalendar library.
Depends on
Dependencies of the latest stable release
No dependencies recorded for this project.
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
Activity
Releases
| Version | Type | Core | Release date | |
|---|---|---|---|---|
| 1.0.0-alpha1 | Pre-release | 11 | Oct 7, 2026 |