Reservations module

Reserve and borrow club spaces, equipment, and other resources — schedules, booking rules, prices, and loans.

The reservations module is Hob’s module for reserving and borrowing club spaces, equipment, and other resources. It is written for admins and members — this page describes day-to-day use, not the technical API.

Members see the module as Reservations. The technical identifier in the system remains lending (URL paths, API, permissions).

The module usually works with the member registry and payments modules. The borrower is a member (or a guest, if the rules allow it); paid time-slot bookings create a charge on the member’s saldo.

Introduction

The module covers:

  • Lendable resources — rooms, tools, books, games, or other club-owned things that members can reserve or borrow.
  • Schedules — when a resource can be booked (repeating times, one-off times, or an iCalendar feed).
  • Booking rules — who may book, whether approval is required, and which limits and prices apply.
  • Bookings — a member reserves a time or an item; admins see and manage bookings.
  • Blocked times — external calendars or schedules that mark the resource as already reserved.

Typical uses: booking a hall or sauna, reserving a game room, or managing lendable equipment.

Terminology

TermMeaning
Lendable resourceOne bookable or borrowable item (e.g. Hall 1, sauna, game room). A resource has a name, a technical name (slug), a reservation type, and an optional intro description (multilingual).
Reservation typeHow capacity is counted: Time slots (calendar times), Quantity (several items at once), or Single item (one at a time).
ScheduleA set of times that defines when the resource is open for booking. It can be entered by hand, loaded from a .ics file, or synced from an iCalendar URL.
Booking rule (policy)A rule set on the resource: who it applies to, booking mode, limits, extra form, linked schedules, and prices. Rules are evaluated top to bottom — the first match wins.
Applies toConditions that select the rule for a borrower (e.g. everyone, signed-in members, actual members). Conditions can also read club member extra data (the registry extra form), for example to block booking when extra field blocked is true.
Booking modeInstant, Request approval, or Waitlist.
BookingOne member’s (or guest’s) reservation of a resource. Includes the time range (for time-slot bookings), quantity, and status.
Blocked timesSchedules whose events are already reserved elsewhere and block new bookings on the resource.

Who is it for?

  • Clubs and associations with shared spaces (hall, sauna, game room)
  • Associations where members reserve equipment or other resources
  • Cases where different groups (members / guests) need different rules or prices

Member view

For a signed-in member at /lnd (Reservations):

  • Lendable resources — list of active resources.
  • Resource page — an admin-written intro (markdown) may appear under the name, then a calendar (or list) of free and reserved times. Empty intro = no intro.
  • Making a booking — choose a day and a time range inside opening hours, then confirm.
  • Own booking — you see your bookings; you can fill the extra form and cancel an upcoming booking.
  • Frontpage — your upcoming bookings appear in frontpage events.

Booking usually requires sign-in and a member profile. If the resource has a required extra form, the booking stays pending until the form is filled.

Making a time-slot booking

  1. Open the resource from the list.
  2. Choose a day that has free times on the calendar.
  3. Choose start and end times inside the opening window (you can book only part of the window).
  4. Confirm the booking (Reserve).

The calendar shows free, partly reserved, and full times. Other members’ bookings may show a public title and description if those were given. If the booking exceeds the rule’s duration limits, it does not succeed.

Cancellation

  • A member can cancel an upcoming booking that has not started yet.
  • A past or already started booking cannot be cancelled by the member.
  • Cancellation frees the time for others.

Admin view

In the dashboard under Reservations:

  • Bookings — an admin can create, edit, and delete bookings from the dashboard (for a member or without a member).
  • Resources — create and edit resources (intro description, booking rules, blocked times).
  • Schedules — create schedules, iCalendar sync, and .ics upload.

The dashboard home shows the next three upcoming bookings (time-slot bookings). The member’s own upcoming bookings still appear in the club frontpage events.

Admin-created bookings do not follow member booking-rule limits (active count, schedule windows, duration limits, and so on); times can be set freely. When editing, you can change the time range, status, due or pick-up date, return, and extra data; borrower and resource are not changed after creation.

Creating a resource (time slots)

  1. Create a schedule if needed (Schedules) — name, repeating or one-off times, or an iCalendar URL / .ics file.
  2. Create a lendable resource with type Time slots, give it a name, write an intro description in each language if needed, and activate the resource. The intro appears on the public resource page under the name.
  3. Add a booking rule: rule name, who it applies to, booking mode, limits, schedules, and an optional price.
  4. Add blocked times from external calendars if needed.

Rules can also be copied from another resource (duplicate the rules or reuse shared rules).

Preview and simulation

An admin can preview the resource’s public page (including an inactive resource that members do not see). In preview you can simulate a booking: the system shows whether the booking is allowed, which rule and price apply, and any limit errors — without creating a booking. The simulation can be run as another member (e.g. with different extra data or rules) or with booking-form choices if the price depends on them. An ordinary member cannot preview an inactive resource or simulate.

Schedules

A schedule defines the bookable times:

MethodDescription
By hand / repeatFor example every day 10:00–15:00 or Saturdays 08:00–19:00.
iCalendar URLA public or secret calendar link (e.g. Google). Hob syncs the schedule regularly.
.ics fileA one-off upload; replaces the schedule contents. The file can be created with a tool such as iCal Event Maker.

A schedule can have a filter (e.g. by title) so that only matching events are included in the sync.

Capacity on a schedule says how many simultaneous bookings fit in the same window (often 1 for a room booking).

Blocked times

You can attach schedules whose events are marked as already reserved. External use (e.g. another booking system or a staff calendar) then blocks overlapping bookings in Hob.

Title and description from external calendar events can be shown on the resource’s public calendar. Per link, an admin can choose how that information is shown (default: the event title and description as-is). Blocked times still prevent overlapping bookings; the visible title and description are extra information for members, not a separate Hob booking.

Booking rules

One resource can have several rules. The system walks the rules from top to bottom and uses the first whose Applies to condition matches the borrower.

SettingDescription
Rule nameLabel for admins (e.g. members, guests).
Applies toEveryone / signed-in / actual members (or a more specific condition). Empty condition = everyone. Conditions can also use registry extra data (m.data.*, e.g. m.data.blocked != true). A missing extra field behaves as “not true” in != true conditions.
Booking modeInstant, request approval, or waitlist.
Max active per borrowerHow many active bookings the same person may have (empty = no limit).
Max days forwardHow far into the future one may book (empty = no limit).
Maximum single booking duration (min)Maximum length of one booking in minutes. Empty = no limit.
Maximum total booking duration (min)Combined length of the same person’s upcoming bookings for this resource and this rule, in minutes. Past bookings do not count. Empty = no limit.
Extra booking formOptional or required fields at booking time.
Schedules in this ruleWhich schedules belong to this rule; a per-schedule price is possible.

Put more specific conditions (e.g. actual members or a block based on extra data) first and a general fallback last, so the right rule hits the right group. m.data.* refers to member extra data; see also the member registry extra form.

Booking modes

ModeMeaning
InstantThe booking is confirmed at once if there is capacity.
Request approvalThe booking waits for staff approval.
WaitlistWhen the resource is full, a new booking goes to the queue.

Example: different rules for members and guests

  1. Rule members — applies to signed-in / actual members, instant booking, a lower price.
  2. Rule guests — applies to everyone (empty condition), request approval.

A signed-in member hits the first rule; without a member profile the booking can hit the guest rule if one is defined.

Extra data can also split members: for example members without a blocked flag (m.data.blocked != true) get instant booking; others hit a different rule or no rule.

Prices and payments

For a time-slot resource the price is set on the rule’s schedule link:

  • Price per minute, hour, or day.
  • Booking duration is rounded up to the billing unit (e.g. 1.5 h → 2 hours on hourly billing).
  • If a booking spans several consecutive schedule windows with different prices, the price is calculated in parts (each window at its own price).
  • A free schedule = no charge. The price can also be left empty, in which case the schedule is not charged.

A confirmed or active paid booking creates a charge on the member’s saldo through Hob’s payments module. Cancellation or deletion removes the matching charge.

Booking statuses

StatusMeaning
PendingWaiting for approval, form fill, or other handling.
ConfirmedThe booking is in force for a future time.
ActiveThe loan / booking is ongoing.
ReturnedThe loan has ended / been returned.
CancelledThe booking was cancelled; the time is free again.

Permissions

RoleRights
Reservations adminManage bookings, lendable resources, and schedules

Without admin rights a member only sees their reservation view (/lnd) and their own bookings.

Integrations

Membership module

  • The borrower is typically a member. Applies-to conditions use the same member fields as payment pricing (e.g. actual member) and registry extra data.
  • Without a profile, booking can be blocked or sent to a guest rule.

Payments module

  • A time-slot price becomes a saldo charge on the booking.
  • The member pays through Hob’s general payment flow.

Notifications and other modules

  • Own upcoming bookings appear in frontpage events.
  • Bookings can later be wired to notifications (due dates and similar) through the notification module.

Practical tips

  • Activate the resource only when booking rules and schedules are ready — an inactive resource is not shown to members.
  • Keep schedules and blocked times up to date if you use an external calendar.
  • Test the rules both as a member and without membership if both groups may book.
  • If the price changes during the day, link different schedules to the same rule at different prices (consecutive windows form one booking period).