Resources vs. appointment types — the mental model
This is the foundational article for the entire Scheduling section. Read it once and the rest of the section is straightforward; skip it and you’ll find yourself stuck.
The one-sentence mental model
Section titled “The one-sentence mental model”Resources are planned. Appointment types are searched.
A resource holds availability (a recurring schedule of when “something” is bookable). An appointment type describes a kind of meeting (its duration, search behavior, and the resources it can run on). When a customer wants to book, they pick the appointment type — and the system searches across the resources mapped to that type to find a free slot of the appropriate length.
That’s it. The rest is mechanics.
Resources
Section titled “Resources”A resource is anything with a finite, schedule-able capacity. In practice that’s one of:
- A person — coach, manager, sales rep.
- A room — Mat 1, Mat 2, the consultation office.
- A course offering — “Minis 3-6” as a group class with N parallel seats.
- Equipment — a single piece of gear that can only be used by one customer at a time.
For each resource you define:
- A name (e.g. “Coach A”, “Office room”, “Minis 3-6”)
- A color
- The Calendar(s) it belongs to (one resource can span multiple calendars; rare but supported)
- A maximum parallel-booking count (e.g. a group class allows 20 simultaneous bookings; a 1-on-1 consultation allows 1)
- A recurring weekly schedule (the resource’s “open hours”)
A resource without a schedule is invisible to the search — it has no availability to offer.
Appointment types
Section titled “Appointment types”An appointment type is the thing a customer asks for. Examples:
- “Beratungsgespräch” (consultation, 15 minutes, one-on-one with any coach)
- “Online Beratung” (Zoom consultation, 30 minutes, plus a 10-minute buffer)
- “Probetraining — Minis 3-6” (trial class, runs on the Minis resource slot)
For each appointment type:
- A name
- A booking duration (how long the actual appointment is)
- A search length (often the same as the booking duration, but can be larger to create a buffer; see Sliding-window search)
- The resources it can be booked on (an appointment type can target multiple resources)
- Whether it’s bookable by prospects (see the
Für Interessenten buchbargotcha)
The N-to-M relationship
Section titled “The N-to-M relationship”A resource can serve many appointment types. An appointment type can run on many resources. Two examples that drive this home:
One resource, two appointment types: “Coach A” (resource) hosts both “Beratungsgespräch” (15 min, prospects) and “Online Beratung” (30 min, prospects). The same coach’s schedule is shared across both.
One appointment type, two resources: “Beratungsgespräch” (appointment type) can be booked with either “Coach A” or “Coach B”. The system searches both resources’ schedules and offers slots from either.
The common case for trial classes is one resource per course, one appointment type per course — they share the name (e.g. resource “Minis 3-6” and appointment type “Minis 3-6”). This pair acts as the canonical “this is a Minis trial class” abstraction.
Why two concepts and not one
Section titled “Why two concepts and not one”Because real schedules are messier than “one resource = one thing”:
- A single coach hosts multiple distinct appointment kinds.
- A single class type has more than one timeslot per week.
- A trial-class slot might also accommodate a private lesson on the same time using the same room.
Collapsing resources and appointment types into one would force you to denormalize the schedule. Keeping them separate means each gets a clean responsibility.
What’s stored where
Section titled “What’s stored where”| Information | Lives on |
|---|---|
| When is the studio open for “Minis 3-6” | Resource (recurring schedule) |
| How long is a Minis trial class | Appointment type (booking duration) |
| Who can teach Minis | Resource → appointment-type mapping |
| Where Minis runs (which calendar) | Resource → calendar mapping |
| Whether Minis is open to prospects | Appointment type (Für Interessenten buchbar flag) |
| Max parallel bookings of Minis | Resource (max parallel) |
The booking flow
Section titled “The booking flow”When a customer wants a Minis trial:
- They pick the appointment type “Minis 3-6” (in a form or the console).
- The system enumerates the resources mapped to that appointment type — say, the single “Minis 3-6” resource.
- It walks that resource’s schedule, looking for free windows of length ≥ the appointment type’s search length.
- It returns the bookable slots.
- The customer picks one; the system creates a booking that occupies the slot.
If the appointment type maps to multiple resources, step 3 unions the results.
What this article doesn’t cover
Section titled “What this article doesn’t cover”- The 1:1 resource+appointment-type-per-course convention for trial classes.
- How to model courses that vary in length day to day.
- The “Für Interessenten buchbar” checkbox that controls public-form visibility.
- The recurring schedule editor and its quirks.
Each is in its own article in this section. Start with the recurring schedule next.
What’s next
Section titled “What’s next”- Recurring schedule — how to actually draw a resource’s open hours.
- Sliding-window search — the search-length vs booking-duration distinction.
- Variable-length courses workaround — what to do when “Minis” is 30 minutes on Tuesday and 60 minutes on Thursday.