Two calendars, one idea: rooms you can see

The boarding timeline and the by-groomer day view answer one question each: where can this animal or this person go next?

Flat illustration of a salon scheduling board with kennel booking bars, a dashed daycare bar and one glowing open slot

A mobile groomer who also runs a salon owns two shelves of questions. Who is in which van, at which stop, and is anyone free at two. Which kennel run is open Thursday, and for how long.

Until last week, Slickerbook answered the first from the calendar and the second from a list of reservations. A list of reservations says who is booked, and that is all it says. To find an open run you read dates off every row and hold them in your head. Groomers were already doing that for the team as well: the day view stacked every groomer into one column, so “who is free at 2” meant untangling overlapping bars.

Both answers now come from the same shape.

One orientation

The boarding calendar puts units down the left and days across, one bar per stay. Occupancy at a glance, holes in the pattern visible from across the desk. The grooming calendar’s day view went the same way for the same reason: one row per groomer, hours running across, and a row grows extra height only when that groomer is double-booked. A normal day stays one row tall.

The two views share a packing rule. When two bars want the same row and overlap, the second goes to a fresh row underneath. That is the whole algorithm. It matters because the two calendars are meant to move together: when one changes how it lays out bars, the other almost certainly should too.

Turnover is not a conflict

Half the correctness in a kennel calendar lives in one definition. A stay occupies its unit from check-in up to, but not including, check-out. Thursday morning out, Thursday afternoon in: no conflict, two bookings on one unit that day, and a closed-interval count would flag it as an error.

It is a Tuesday.

The timeline still warns about overbooking, because sometimes the two pets sharing a unit are the point. The banner counts the affected days and tells you the bookings stand. Nothing gets blocked on its own.

Daycare in the same grid

Daycare is a same-day stay with its own rate, drawn as a dashed bar so nobody reads it as an overnight. Same-day stays would otherwise bill zero nights, which is why daycare needed its own rate column rather than a clever zero.

Month view spills to whole weeks for the same reason the grooming calendar does: a month view that starts midweek and cuts off at the 30th answers the wrong question. Both calendars share the range logic.

Who is free at 2

The lane view hides idle groomers by default, so a seven-person roster stays readable. On a quiet day the filter falls back to the whole roster rather than leaving you nowhere to click. Click an empty hour and the booking dialog opens on that lane’s groomer. Blockouts paint the full lane height, because a day off is not a slot you can squeeze into.

The two features landed in the last week of August 2026. They share a layout engine, an orientation, and one job: turn two lists you had to read into two grids you can see. When a change lands in one, keep the other in mind. That is the intent.

Filed under Running the business , ,