Space context: wireframes
Lo-fi ASCII wireframes for README.md. The clickable version is prototype/index.html.
Conventions
- Drawn LTR in English. RTL note, for every frame: Hebrew is the default case. Mirror each frame horizontally: the sidebar sits on the right, the top-bar switcher button (when shown) at the start (right) of the top bar, chevrons and breadcrumb separators flip, board days run from the start side and space rows keep
sort_order. Times and counts stay as they are; space names are never abbreviated. Labels come from README §11.1. - Example business: CrossFit Rishon City with three spaces: Main hall (capacity 30, exclusive), Parquet (capacity 16, exclusive), Open gym (capacity 20, shared). Sample data only.
- Desktop frames are 100 columns (1440px), phone frames 38 columns (390px).
- One switcher on screen (README §7.1). Desktop frames have the sidebar open, so the switcher is the sidebar header and the top bar shows the page title only; frames that show the main area alone name their context (Parquet, All spaces) in the heading. Phone frames and the sidebar-hidden frame (§1.5) show the switcher as one button at the start of the top bar.
| Glyph | Meaning |
|---|---|
(o) | Pin icon: one space is active |
(=) | Stacked icon: All spaces |
▾ | Opens the context menu |
⇅ | Today’s org-switcher chevron |
› | Separator in today’s page breadcrumb (an icon that flips in RTL) |
(( Label )) | The one filled teal button on the surface |
[ Label ] | Outline or ghost button, chip, or input |
✓ | Checked item (teal) |
▒▒▒ | Skeleton while a scoped region loads |
{Whole business} | Quiet muted tag, single space only: once per page or section that ignores the space, or on a card that ignores it next to cards that follow it |
[*] | Spotter (violet) |
v / > | Board row toggle: open / folded (flips in RTL) |
1. The context switcher
1.1 Multi-space, desktop, closed
+----------------------------+---------------------------------------------------------------------+
| [CR] CrossFit Rishon City | [|] Schedule [*] |
| (o) Parquet ▾ |---------------------------------------------------------------------|
|----------------------------| |
| Overview | Schedule |
| | |
| CLIENTS | (content scoped to Parquet) |
| Members | |
| Messages | |
| Forms | |
| TRAINING | |
| >Schedule | |
| Training groups | |
| Workout library | |
| BUSINESS | |
| Membership plans | |
| Revenue | |
| Reports | |
| Tasks | |
|----------------------------| |
| Settings | |
+----------------------------+---------------------------------------------------------------------+- The sidebar header is today’s org block with a second line for the space. With the sidebar open it is the only switcher: the top bar shows the page title only.
- The switcher is the context indicator on every screen. Page titles get no suffix, and rows, cards and tiles carry no space name; the places that may name a space are listed in README §7.6.
1.2 Multi-space, desktop, open
+----------------------------+
| [CR] CrossFit Rishon City | trigger: aria-haspopup="menu", aria-expanded="true"
| (o) Parquet ▴ |
+----------------------------+---------------+
| SPACES | role="group", labelled "Spaces"
| (=) All spaces | role="menuitemradio"
| (o) Main hall |
| (o) Parquet ✓ | aria-checked="true"
| (o) Open gym |
|--------------------------------------------|
| SWITCH ORGANIZATION | today's rows, unchanged
| [CR] CrossFit Rishon City Owner ✓ |
| [DB] Demo Branch B Admin |
| [TD] Taikan Demo Gym Member |
+--------------------------------------------+
↑↓ move · Home/End · type to jump · Enter selects · Esc closes and returns focus- With 8 or more spaces, a filter field (“Find a space…”) sits above SPACES.
- A space switch stays on the route; a business switch is a full navigation (README §7.4).
- A reserved, unrendered NETWORK group would sit above SPACES (§9).
1.3 Multi-space, phone, closed and open
closed open (bottom sheet)
+------------------------------------+ +------------------------------------+
| [|] [(o) Parquet ▾] Schedule [*] | | (page dimmed behind) |
|------------------------------------| | |
| Schedule | |+----------------------------------+|
| | || ───── ||
| (content scoped to Parquet) | || Working in ||
| | || CrossFit Rishon City › Parquet ||
| | ||----------------------------------||
| | || SPACES ||
| | || (=) All spaces ||
| | || (o) Main hall ||
| | || (o) Parquet ✓ ||
| | || (o) Open gym ||
| | ||----------------------------------||
| | || SWITCH ORGANIZATION ||
| | || [CR] CrossFit Rishon City ✓ ||
| | || Owner ||
| | || [DB] Demo Branch B ||
| | || Admin ||
| | |+----------------------------------+|
+------------------------------------+ +------------------------------------+- Today the phone top bar shows no business at all; the switcher button fixes that.
- Rows are 48px tall. The sheet pads for
safe-area-inset-bottomand contains its own scroll. - The page title truncates first, then the button’s space name (about 18 characters).
1.4 One-space business, and a staff member the owner restricted to one space
one space, one membership (most customers): identical to today
+----------------------------+---------------------------------------------------------------------+
| [SN] Studio Neta | [|] Schedule [*] |
|----------------------------|---------------------------------------------------------------------|
one space, two memberships: today's dropdown in the sidebar header is the switcher
+----------------------------+---------------------------------------------------------------------+
| [SN] Studio Neta ⇅ | [|] Schedule [*] |
|----------------------------|---------------------------------------------------------------------|
menu: SWITCH ORGANIZATION only (Studio Neta ✓, Demo Gym · Member). No SPACES group.
On a phone or with the sidebar hidden, the top-bar button names the business only: [ Studio Neta ▾ ].
staff member restricted by the owner to Parquet, one membership: a label, not a button
+----------------------------+---------------------------------------------------------------------+
| [CR] CrossFit Rishon City | [|] Schedule [*] |
| (o) Parquet |---------------------------------------------------------------------|
phone, one space, one membership: identical to today
+------------------------------------+
| [|] Schedule [*] |
|------------------------------------|1.5 When the sidebar isn’t visible, and the phone sidebar sheet
desktop, sidebar hidden: the switcher moves to the start of the top bar
+--------------------------------------------------------------------------------------------------+
| [|] [ (o) Parquet ▾ ] Schedule [*] |
|--------------------------------------------------------------------------------------------------|
| Schedule (( + New session )) |
| |
| (content scoped to Parquet) |
+--------------------------------------------------------------------------------------------------+
[|] shows the sidebar again: the button goes away and the sidebar header is the switcher.
phone, sidebar sheet open: the sheet's header is the switcher
+------------------------------------+
|+------------------------+ |
|| [CR] CrossFit Rishon | |
|| City | (top bar |
|| (o) Parquet ▾ | and page |
||------------------------| inert, |
|| Overview | under the|
|| CLIENTS | scrim) |
|| Members | |
|| Messages | |
|| TRAINING | |
|| Schedule | |
|| … | |
|+------------------------+ |
+------------------------------------+- Exactly one interactive switcher at any time (README §7.1). The top-bar button’s menu holds the business too, so nothing is lost when the sidebar is hidden.
- Focus returns to the switcher that opened the menu. On a phone a switch closes the sidebar sheet, so focus lands on the top-bar button.
- Today’s desktop collapse hides the sidebar completely (shadcn
offcanvas). An icon rail, if adopted later, would collapse the header to the logo, never a second switcher.
2. Schedule: the folded board
As built (TKN-463): the folding is a layer inside the existing Expanded, Condensed and Programming views, not a separate board view: each space is a collapsible section holding that view’s own grid, stacked (README §8.1). The frames below show the rows/folding idea; read each “row” as a section of the current view. There is no week/day board switch.
Rows are spaces, columns are days, as on the coaching program board (program-board.tsx, WeekGrid). Frames in this section show the main area only; the sidebar is as in §1.1. Cards are shortened to fit ASCII (07 Mobil. = 07:00 Mobility, ! = full with a waitlist); class names are shortened only in these frames, and space names never are.
2.1 Desktop week, one space active (Parquet)
+--------------------------------------------------------------------------------------------------+
| [|] Schedule [*] |
|--------------------------------------------------------------------------------------------------|
| Schedule (( + New session )) |
| [‹] Oct 11 – 17, 2026 [›] [Today] [Week] [Day] |
| |
| +-----------------+---------+---------+---------+---------+---------+---------+---------+ |
| | Space | Sun 11 *| Mon 12 | Tue 13 | Wed 14 | Thu 15 | Fri 16 | Sat 17 | |
| +-----------------+---------+---------+---------+---------+---------+---------+---------+ |
| | v Parquet | 07 Mobil| 18 Lift | 07 Mobil| 18 Lift | 07 Mobil| | 09 Mobil| |
| | /16 exclusive | 18 Lift | | 19:30 CF| | 19:30 CF| | | |
| | | 19:30 CF| | | | | | | |
| +-----------------+---------+---------+---------+---------+---------+---------+---------+ |
| | > Main hall | 4 | 2 | 3 | 2 | 3 | 1 | 1 | |
| | /30 exclusive | | | | | | | | |
| +-----------------+---------+---------+---------+---------+---------+---------+---------+ |
| | > Open gym | 2 | 2 | 2 | 2 | 2 | 1 | 1 | |
| | /20 shared | | | | | | | | |
| +-----------------+---------+---------+---------+---------+---------+---------+---------+ |
| |
| Parquet is pinned first and open. The other halls fold to a count per day; [>] opens them. |
| Drag a Parquet card onto the same day in another row to move it there. |
+--------------------------------------------------------------------------------------------------+- The active space changes focus, not content: its row is open and pinned first; the others show
CollapsedCellcounts. Nothing is filtered away (a staff member the owner restricted simply has no other rows). - Each row header carries the chevron toggle (
aria-expanded, “Expand row” / “Collapse row”), the name, capacity and conflict mode. Toggling a row is view state, not context. - An empty cell in an open row has an add button (“Add a session in Parquet on Mon 12”).
2.2 Desktop week, All spaces
+--------------------------------------------------------------------------------------------------+
| [|] Schedule [*] |
|--------------------------------------------------------------------------------------------------|
| Schedule (( + New session )) |
| [‹] Oct 11 – 17, 2026 [›] [Today] [Week] [Day] |
| |
| +-----------------+---------+---------+---------+---------+---------+---------+---------+ |
| | Space | Sun 11 *| Mon 12 | Tue 13 | Wed 14 | Thu 15 | Fri 16 | Sat 17 | |
| +-----------------+---------+---------+---------+---------+---------+---------+---------+ |
| | v Main hall | 06 CF | 06 CF | 06 CF | 06 CF | 06 CF | 06 CF | 09 CF | |
| | /30 exclusive | 07 CF ! | 18 CF | 07 CF | 18 CF | 07 CF | | | |
| | | 18 CF | | 18 CF | | 18 CF | | | |
| | | 19:30 CF| | | | | | | |
| +-----------------+---------+---------+---------+---------+---------+---------+---------+ |
| | v Parquet | 07 Mobil| 18 Lift | 07 Mobil| 18 Lift | 07 Mobil| | 09 Mobil| |
| | /16 exclusive | 18 Lift | | 19:30 CF| | 19:30 CF| | | |
| | | 19:30 CF| | | | | | | |
| +-----------------+---------+---------+---------+---------+---------+---------+---------+ |
| | v Open gym | 06–10 | 06–10 | 06–10 | 06–10 | 06–10 | 08–12 | 08–12 | |
| | /20 shared | 17–21 | 17–21 | 17–21 | 17–21 | 17–21 | | | |
| +-----------------+---------+---------+---------+---------+---------+---------+---------+ |
| |
| All spaces: every row open (up to 5 spaces). Above 5 they start folded and a search appears. |
| Folded rows that need attention (a full class, an exclusive clash) sort first. |
+--------------------------------------------------------------------------------------------------+2.3 Desktop day view
+--------------------------------------------------------------------------------------------------+
| [|] Schedule [*] |
|--------------------------------------------------------------------------------------------------|
| Schedule (( + New session )) |
| [‹] Sunday, Oct 11 [›] [Today] [Week] [Day] |
| |
| +-----------------+--------------------------------------------------------------------------+ |
| | Space | Sunday, Oct 11 | |
| +-----------------+--------------------------------------------------------------------------+ |
| | v Parquet | [07:00 Mobility · Maya 9/16] [18:00 Weightlifting · Lior 12/16] | |
| | /16 exclusive | [19:30 CrossFit · Dana 16/16 · 3 wl] [ + ] | |
| +-----------------+--------------------------------------------------------------------------+ |
| | > Main hall | 4 sessions | |
| | /30 exclusive | | |
| +-----------------+--------------------------------------------------------------------------+ |
| | > Open gym | 2 sessions | |
| | /20 shared | | |
| +-----------------+--------------------------------------------------------------------------+ |
+--------------------------------------------------------------------------------------------------+- Same rows, one day. Open rows list the day’s cards in time order; folded rows show the day’s count.
2.4 Moving a session to another space
drag (desktop) keyboard and touch: the card's menu
+-----------------+---------+---------+ +------------------------------+
| v Parquet | 18 Lift | | | 18:00 Weightlifting · Lior |
| | ⋮ ↓ | | |------------------------------|
+-----------------+----┆----+---------+ | Open |
| v Main hall | [drop ]| | | Move to space › |
| | [here ]| | | ( ) Main hall |
+-----------------+---------+---------+ | (•) Parquet |
only the same day in other rows | ( ) Open gym |
accepts the drop; those cells highlight | Cancel session |
+------------------------------+
the target is busy (exclusive): owner/admin get the override dialog
+----------------------------------------------------+
| Main hall is already booked at 18:00 |
| |
| CrossFit · Dana · 18:00–19:00 is in Main hall, |
| which is exclusive. |
| |
| Reason (required) |
| [ Parquet floor is being refinished… ] |
| |
| [ Keep in Parquet ] (( Move anyway )) |
+----------------------------------------------------+
A coach sees the same text without the reason field and "Move anyway".
After a move: "Weightlifting 18:00 moved to Main hall · Undo" in a polite live region.2.5 Phone: stacked space sections for one day
one space active (Parquet) All spaces
+------------------------------------+ +------------------------------------+
| [|] [(o) Parquet ▾] Schedule [*] | | [|] [(=) All spaces ▾] Sch… [*] |
|------------------------------------| |------------------------------------|
| Schedule | | Schedule |
| S M T W T F S [Today] | | S M T W T F S [Today] |
| • | | • |
|------------------------------------| |------------------------------------|
| v Parquet 3 today | | v Main hall 4 today |
| 07:00 Mobility · Maya 9/16 › | | 06:00 CrossFit · Dana 18/30 › |
| 18:00 Weightlifting 12/16 › | | 07:00 CrossFit · Yoni 30/30 › |
| 19:30 CrossFit · Dana 16/16 › | | 18:00 CrossFit · Dana 26/30 › |
|------------------------------------| | 19:30 CrossFit · Yoni 22/30 › |
| > Main hall 4 today | |------------------------------------|
|------------------------------------| | v Parquet 3 today |
| > Open gym 2 today | | 07:00 Mobility · Maya 9/16 › |
|------------------------------------| | … |
| | |------------------------------------|
| (( + New session )) | | v Open gym 2 today |
+------------------------------------+ +------------------------------------+- Each section header is a button with
aria-expanded; the active space is open and first. On phone, moving uses the card’s “Move to space” menu (no drag).
3. Creating a session inside a space
3.1 Desktop sheet, in Parquet
+-----------------------------------------------------------+-----------------------------------+
| (schedule, dimmed) | New session [x] |
| | Create a session |
| |-----------------------------------|
| | Space: Parquet [Change] |
| | (o) capacity 16 · exclusive |
| | From the space you work in |
| |-----------------------------------|
| | Class type |
| | [ Weightlifting ▾ ] |
| | Coach |
| | [ Lior ▾ ] |
| | [▸ Additional details ] |
| | date, time, title, capacity, |
| | notes (space is no longer here)|
| |-----------------------------------|
| | Status [Draft ▾] (( Create )) |
+-----------------------------------------------------------+-----------------------------------+- The space is always set and always at the top. Its source is named: “From the space you work in”, “From the class type”, or “The default space”.
- In All spaces the line starts on the default space and follows the class type when one is picked (“Weightlifting → Parquet”). There is no “No space” option and no “Choose a space” error any more.
- With the sidebar open, the switcher is the sidebar header: visible, and inert until the sheet closes. With the sidebar hidden (or on a phone), the switcher is the top-bar button, the sheet opens below the top bar, and the button stays usable; a switch with unsaved changes hits the guard (§3.2).
3.2 Phone sheet, and the guard when switching with unsaved changes
sheet in Parquet switching to Main hall while the sheet is dirty
+------------------------------------+ +------------------------------------+
| [|] [(o) Parquet ▾] Schedule [*] | | [|] [(o) Parquet ▾] Schedule [*] |
|------------------------------------| |+----------------------------------+|
| New session [x] | || Discard unsaved changes? ||
|------------------------------------| || ||
| Space: Parquet [Change] | || Switching to Main hall closes ||
|------------------------------------| || the new session without saving. ||
| Class type | || ||
| [ Weightlifting ▾ ] | || [ Keep editing ] ||
| Coach | || [ Discard and switch ] ||
| [ Lior ▾ ] | |+----------------------------------+|
| [▸ Additional details ] | | focus starts on "Keep editing"; |
|------------------------------------| | "Discard and switch" is rust |
| [Draft ▾] (( Create )) | | |
+------------------------------------+ +------------------------------------+4. Members: focus, not labels
Members belong to the business for everyone. The space only focuses the list, through the chip in the search bar and the count line. Rows carry no space names: no “Active in” column, no chips, no ”· main” (README §7.6). The member detail’s one per-space line (§4.5) is the only place a member’s spaces are listed.
4.1 Desktop, in Parquet
+----------------------------+---------------------------------------------------------------------+
| [CR] CrossFit Rishon City | [|] Members [*] |
| (o) Parquet ▾ |---------------------------------------------------------------------|
| | Members (( Invite member )) |
| | [ Search name, phone or email… ] [Active in Parquet x] |
| | 131 active in Parquet · 174 not active here |
| | 13 with no check-ins in 60 days · sample of 11 shown |
| | +---------------------------+-------------------------+----------+ |
| | | Name | Plan | State | |
| | +---------------------------+-------------------------+----------+ |
| | | Noa Levi | CrossFit 3x/week | Active | |
| | | Amit Cohen | Mobility 4/month | Active | |
| | | Ido Mizrahi | Punch card 10 | Debt | |
| | | Shira Ben-David | Flex 8/month | Frozen | |
| | | Yael Shapiro | CrossFit 2x/week | Active | |
| | +---------------------------+-------------------------+----------+ |
| | NO CHECK-INS IN THE LAST 60 DAYS (13): first 3 shown |
| | +---------------------------+-------------------------+----------+ |
| | | Rina Katz · new member | Starter 4/month | Active | |
| | | Ben Dror · converted lead | Trial pass | Active | |
| | | Hadas Ofer · new member | No plan yet | Invited | |
| | +---------------------------+-------------------------+----------+ |
| | No space column and no space names in rows. Members whose main |
| | space is Parquet sort first; the chip and the count line carry |
| | the context. |
+----------------------------+---------------------------------------------------------------------+- Order inside the space: members whose main space is Parquet, then others active in Parquet (unlabelled; the order is the only trace of the main space), then the “No check-ins in the last 60 days” group. The chip filters the first two groups only; the third group is always shown.
- The count line is “{active} active in Parquet · {notActive} not active here”;
notActiveexcludes the no-check-ins group, which has its own line. - Anyone, including a staff member the owner restricted, can clear the chip and see every member.
- In All spaces there is no chip and no extra group: the list is today’s list.
4.2 Phone, in Parquet, and a search that finds a member from another hall
+------------------------------------+ +------------------------------------+
| [|] [(o) Parquet ▾] Members [*]| | [|] [(o) Parquet ▾] Members [*]|
|------------------------------------| |------------------------------------|
| Members | | Members |
| [ Search name or phone… ] | | [ Tal ]|
| [Active in Parquet x] | | [Active in Parquet x] |
| 131 active · 174 not active here | |------------------------------------|
| 13 with no check-ins in 60 days | | No match among members active |
|------------------------------------| | here. |
| Noa Levi ›| |------------------------------------|
| CrossFit 3x/week · Active | | MATCHES IN OTHER SPACES (1) |
|------------------------------------| | Tal Amar ›|
| Ido Mizrahi ›| | CrossFit unlimited · Active |
| Punch card 10 · Debt | |------------------------------------|
|------------------------------------| | Book Tal into a session from the |
| Shira Ben-David ›| | member page as usual. |
| Flex 8/month · Frozen | +------------------------------------+
|------------------------------------|
| NO CHECK-INS IN 60 DAYS (13) |
|------------------------------------|
| Rina Katz ›|
| New member · Active |
+------------------------------------+ 4.3 Announcement audience in Parquet
+----------------------------+---------------------------------------------------------------------+
| [CR] CrossFit Rishon City | [|] Messages [*] |
| (o) Parquet ▾ |---------------------------------------------------------------------|
| | New announcement |
| | To [ Members active in Parquet ▾ ] 131 people |
| | [ ] + 13 with no check-ins in the last 60 days |
| | No check-in in the last 60 days: new joiners, |
| | converted leads, members who never check in. |
| | Title [ Floor closed Thursday ] |
| | Message [ ] |
| | |
| | [ Save draft ] (( Send )) |
| | |
| | The audience selector names the space once, because it is a |
| | choice. Nothing else in the composer or the sent list does. |
+----------------------------+---------------------------------------------------------------------+- The checkbox is unchecked by default, so new joiners don’t receive every hall’s news unless the author chooses. Ticking it adds them to the recipient list stored at send.
4.4 Members header widgets (owner and admin)
Today’s header is four stat cards (total with the roster donut, trained this week, new this month, churned this month), then the imported and at-risk callouts. The ribbon is hidden from coaches, as today. {WB} = the quiet “Whole business” tag, used in a single space only on cards that ignore the space while their neighbours follow it (README §7.6). Every space number in the header uses the same counts as the list line below it (131 + 174 + 13 = 318).
Desktop, Parquet
+--------------------------------------------------------------------------------------------------+
| [|] Members [*] |
|--------------------------------------------------------------------------------------------------|
| Members [Import / export] [Add] (( Invite member )) |
| |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| | Active here | | Trained this week | | New this month {WB}| | Churned this month | |
| | 131 | | 52 | | 14 +17% | | 8 +2 | |
| | of 318 members | | of 131 active here | | | | | |
| | | | | | | | | |
| | ( donut over the 13| | | | | | | |
| | with plans 118 | | | | | | | |
| | overdue 3 · in debt| | | | | | | |
| | leaving 3 · no plan| | | | | | | |
| | former 1 | | | | | | | |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| |
| [!] 5 members awaiting invite {Whole business} [View them] (Send invites) |
| Imported from your old system. None of them has checked in yet. |
| [!] 4 members need attention [Review] |
| Ido Mizrahi · In debt ₪420 |
| Lior Ben-Ami · Past due |
| Maya Tal · Past due |
| Rotem Azulay · Past due |
| (members active here; no summed debt for a space) |
| |
| Not here: "New to a space", "Last active in" and "Training across spaces" are breakdowns |
| (All spaces only). Tags only on the two cards that ignore the space: New and Churned. |
| |
| 131 active in Parquet · 174 not active here · 13 with no check-ins in 60 days |
| (list as in §4.1) |
+--------------------------------------------------------------------------------------------------+- The donut becomes a people filter over the 131 members active in Parquet. It does not attribute money.
- The at-risk callout lists the members active here with their own debt and no space names; it never sums debt for a space.
- “New to a space”, “Last active in” and “Training across spaces” are breakdowns, so they appear in All spaces only.
Desktop, All spaces
+--------------------------------------------------------------------------------------------------+
| [|] Members [*] |
|--------------------------------------------------------------------------------------------------|
| Members People: [(Main space) | Active in] (( Invite member )) |
| |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| | Total members | | Trained this week | | New this month | | Churned this month | |
| | 318 | | 203 | | 14 +17% | | 8 +2 | |
| | ( today's donut ) | | of 318 members | | | | | |
| | with plans 267 | | by main space: | | New to a space: | | Last active in: | |
| | overdue 4 · in debt| | Main hall 112 | | Main hall 9 | | Main hall 4 | |
| | leaving 6 · not joi| | Parquet 45 | | Parquet 11 | | Parquet 2 · Open gy| |
| | no plan 18 · former| | Open gym 46 = 203 | | Open gym 6 = 26* | | none 1 = 8 | |
| | by main space: | | Active in toggle: | | | | | |
| | Main hall 158 ████░| | Main hall 133 | | | | | |
| | Parquet 86 ██░░░| | Parquet 52 · Open g| | | | | |
| | Open gym 61 █░░░░| | = 244* | | | | | |
| | no check-ins 13 = 3| | | | | | | |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| |
| [!] 5 members awaiting invite [View them] (Send invites) |
| [!] 7 members need attention · ₪1,240 unpaid [Review] |
| Gil Peretz · In debt ₪560 |
| Ido Mizrahi · In debt ₪420 … |
| |
| TRAINING ACROSS SPACES 113 of 318 train in 2+ spaces (36%) |
| Main hall + Parquet 57 ██████████ Main hall + Open gym 35 ██████ |
| Parquet + Open gym 8 █ all three 13 ██ = 113 |
| |
| * Rows overlap: a member counts in every space they train in or are new to. |
| No tags in All spaces: nothing on the page is filtered. The list below is today's list. |
+--------------------------------------------------------------------------------------------------+- Today’s donut stays; the main-space split bar under it adds up to 318. “Active in” (check-ins, toggle) shows Main hall 196 · Parquet 131 · Open gym 104 = 431*.
- No tags in All spaces, and the at-risk rows carry no spaces.
Phone, Parquet and All spaces
+------------------------------------+ +------------------------------------+
| [|] [(o) Parquet ▾] Members [*] | | [|] [(=) All spaces ▾] Mem… [*] |
|------------------------------------| |------------------------------------|
| Members | | Members |
| | | People [(Main space)|Active in] |
| ACTIVE HERE 131 | | TOTAL MEMBERS 318 |
| of 318 members | | Main hall 158 ████████░ |
| with plans 118 · overdue 3 | | Parquet 86 ████░ |
| in debt 1 · leaving 3 | | Open gym 61 ███░ |
| no plan 5 · former 1 | | no check-ins 13 |
|------------------------------------| |------------------------------------|
| TRAINED THIS WEEK 52 | | TRAINED THIS WEEK 203 of 318 |
| of 131 active here | | Main hall 112 · Parquet 45 |
|------------------------------------| | Open gym 46 = 203 |
| NEW THIS MONTH {WB} 14 | |------------------------------------|
|------------------------------------| | NEW THIS MONTH 14 |
| CHURNED {WB} 8 | | New to Main hall 9 · Parquet 11 |
|------------------------------------| | · Open gym 6 = 26* |
| [!] 4 members need attention | |------------------------------------|
| [Review] | | CHURNED 8 |
+------------------------------------+ | last active: Main hall 4 |
| Parquet 2 · Open gym 1 · none 1 |
|------------------------------------|
| [!] 7 need attention · ₪1,240 |
| [Review] |
|------------------------------------|
| 113 of 318 in 2+ spaces (36%) |
| Main hall + Parquet 57 |
| Main hall + Open gym 35 |
| Parquet + Open gym 8 · all 13 |
+------------------------------------+4.5 Member detail stats (M8): desktop and phone
+------------------------------------------------------+ +------------------------------------+
| Noa Levi · Member | | Noa Levi |
|------------------------------------------------------| |------------------------------------|
| +--------------+ +--------------+ +--------------+ | | CLASSES THIS MONTH 9 |
| | Classes this | | Total classes| | Last visit | | | Parquet 6 · Main hall 3 |
| | month 9 | | 142 | | Today | | |------------------------------------|
| | Parquet 6 · | | | | | | | TOTAL CLASSES 142 |
| | Main hall 3 | | | | | | |------------------------------------|
| +--------------+ +--------------+ +--------------+ | | LAST VISIT Today |
| | +------------------------------------+
| One small per-space line under "Classes this month": |
| the only place a member's spaces are listed. No |
| "main" marker; the header, total and last visit |
| carry no space. Same in any context. |
+------------------------------------------------------+ 4.6 Few check-ins: Demo Branch B (two spaces, rarely checks people in)
Member-based space numbers count check-ins only (README §6.8). Demo Branch B checks in fewer than 10% of its bookings, so most members fall into “No check-ins in the last 60 days”. The widgets stay and say why, once, with a link to check-in setup. Session-derived numbers (classes, hall load, fill) are unaffected.
+------------------------------------+ +--------------------------------------+
| [|] [(o) Studio ▾] Members [*] | | [|] [(=) All spaces ▾] Reports [*] |
|------------------------------------| |--------------------------------------|
| Members | | BY SPACE (session-derived: unchanged)|
| | | Classes this week 15 |
| ACTIVE HERE 11 | | Studio 10 · Yard 5 |
| of 61 members | | Hall load Studio 31% · Yard 19% |
|------------------------------------| |--------------------------------------|
| (i) Space numbers come from | | PEOPLE (check-ins only) |
| check-ins. Few check-ins were | | Active members 61 by main space |
| recorded in the last 60 days. | | Studio 9 · Yard 3 · no check-ins 49 |
| [Set up check-in] | | (i) Few check-ins were recorded in |
|------------------------------------| | the last 60 days. [Set up] |
| 11 active in Studio · 1 not | +--------------------------------------+
| active here · 49 with no |
| check-ins in 60 days |
|------------------------------------|
| NO CHECK-INS IN 60 DAYS (49) |
+------------------------------------+ 5. Stats widgets: Overview and Reports by space
The rules follow README §7.6 and §12: in a single space, a tile that follows the space carries nothing (the switcher names the space); {Whole business} marks a number that ignores the space, once per section that ignores it or on a card next to space cards; “by main space” in a sub-line means people are attributed (§6.8). Space names appear only in breakdown blocks, and those render in All spaces only. A footnote marker * means the rows overlap and don’t add up. The frames show the main area only; the sidebar is as in §1.1. A single-space business sees today’s widgets, with none of these labels.
Sample numbers are consistent across frames. Today (Sunday): 11 classes, Main hall 5 + Parquet 3 + Open gym 3. This week: 43 classes, Main hall 18 + Parquet 11 + Open gym 14. Month to date: 1,284 attended, Main hall 702 + Parquet 366 + Open gym 216. Distinct people never add up by “active in”.
5.1 Overview, desktop, Parquet
+--------------------------------------------------------------------------------------------------+
| [|] Overview [*] |
|--------------------------------------------------------------------------------------------------|
| Good evening, Victor · Sunday, October 11 |
| |
| NEEDS YOUR ATTENTION 6 items |
| 3 members on waitlists (CrossFit 19:30 is full) |
| 6 no-shows in the last 7 days |
| 3 members in debt · ₪1,240 |
| 4 members past due |
| 6 leads need action |
| 2 overdue tasks |
| |
| TODAY'S CLASSES Avg fill · 30 days 70% | PENDING TASKS |
| 3 classes · 37 booked · 77% full | Fix the mirror Tue |
| of 11 classes today | Call supplier Mon |
| 07:00 Mobility · Maya 9/16 ▓▓▓▓▓░░░░ | Review invoices overdue |
| 18:00 Weightlifting · Lior 12/16 ▓▓▓▓▓▓▓░░ | … |
| 19:30 CrossFit · Dana 16/16 ▓▓▓▓▓▓▓▓▓ +3 waiting | |
| |
| BUSINESS TRENDS {Whole business} |
| MEMBER GROWTH | REVENUE | LEAD FUNNEL |
| 318 active +6 | ₪84,300 collected | 152 leads · 20% won |
| joined 14 · left 8 · net +6 | expected ₪196,500 / mo | 23 new this month |
| |
| SPACES THIS WEEK: not shown in one space; switch to All spaces to compare halls. |
+--------------------------------------------------------------------------------------------------+- This space’s items come first, then the business items. No tags and no space names on items; the header count is the plain number of items.
- Growth, Revenue and Lead funnel keep their values in every space; the row carries one tag, not one per card.
5.2 Overview, desktop, All spaces
+--------------------------------------------------------------------------------------------------+
| [|] Overview [*] |
|--------------------------------------------------------------------------------------------------|
| Good evening, Victor · Sunday, October 11 |
| |
| NEEDS YOUR ATTENTION 9 items |
| 7 members on waitlists |
| 17 no-shows in the last 7 days |
| 2 of today's classes have no workout yet |
| 1 overlapping session in an exclusive space |
| 3 members in debt · ₪1,240 · 4 past due · 6 leads · 2 overdue tasks |
| |
| TODAY'S CLASSES Avg fill · 30 days 70% | PENDING TASKS |
| 11 classes · 154 booked · 66% full | Fix the mirror Tue |
| Main hall 5 classes ███░░░░ 45% 94 booked 71% full | Replace rope anchor Mon |
| Parquet 3 classes ██░░░░░ 27% 37 booked 77% full | Call supplier Mon |
| Open gym 3 classes ██░░░░░ 27% 23 booked 44% full | … |
| 06:00 CrossFit · Dana 14/30 · 07:00 Mobility · Maya 9/16 | |
| |
| SPACES THIS WEEK Oct 11 – 17 |
| Space Hall load Peak Waitlist /100 No-show Late cancel |
| Main hall 68% ████████░░░░ Sun 07:00 0.8 5.3% 2.8% |
| Parquet 66% ████████░░░░ Sun 19:30 1.7 6.2% 4.1% |
| Open gym 50% ██████░░░░░░ Thu 17:00 0.0 5.9% 2.5% |
| 1 overlap · 1 override this week · 113 of 318 members train in 2+ spaces (36%) |
| |
| MEMBER GROWTH | REVENUE | LEAD FUNNEL |
| 318 active +6 | ₪84,300 collected | 152 leads · 20% won |
| (same values as in any space; no tags in All spaces) |
+--------------------------------------------------------------------------------------------------+- The Today panel adds one row per space, with a share bar for the class count. Fill is a ratio, so it has no share bar.
- “Spaces this week” is new (README §12.3). It shows for owner and admin only, only when the business has 2 or more spaces, and only in All spaces.
- ActionCenter items are plain totals with no per-space counts; switching to a space narrows them. Today’s rows and task rows carry no space names.
5.3 Overview, phone: Parquet and All spaces
+------------------------------------+ +------------------------------------+
| [|] [(o) Parquet ▾] Overview [*] | | [|] [(=) All spaces ▾] Ov… [*] |
|------------------------------------| |------------------------------------|
| Good evening, Victor | | Good evening, Victor |
| Sunday, Oct 11 | | Sunday, Oct 11 |
| | | |
| NEEDS YOUR ATTENTION | | NEEDS YOUR ATTENTION |
| 3 on waitlists | | 7 on waitlists |
| 6 no-shows in 7 days | | 17 no-shows in 7 days |
| 3 in debt · ₪1,240 | | 3 in debt · ₪1,240 |
|------------------------------------| |------------------------------------|
| TODAY'S CLASSES | | TODAY |
| 3 classes · 37 booked · 77% | | 11 classes · 154 booked · 66% |
| of 11 classes today | | Main hall 5 ███░░ 94 · 71% |
| 07:00 Mobility 9/16 | | Parquet 3 ██░░░ 37 · 77% |
| 18:00 Weightlifting 12/16 | | Open gym 3 ██░░░ 23 · 44% |
| 19:30 CrossFit 16/16 +3 wait | |------------------------------------|
|------------------------------------| | SPACES THIS WEEK |
| REVENUE {Whole business} | | Main hall 68% · peak Sun 07:00 |
| ₪84,300 collected this month | | Parquet 66% · peak Sun 19:30 |
+------------------------------------+ | Open gym 50% · peak Thu 17:00 |
| 113 of 318 in 2+ spaces |
+------------------------------------+5.4 Reports snapshot, desktop: Parquet
+--------------------------------------------------------------------------------------------------+
| [|] Reports [*] |
|--------------------------------------------------------------------------------------------------|
| Reports [Export] |
| |
| STUDIO SNAPSHOT |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| | Active members | | Net receipts (MTD) | | Classes this week | | Attendance rate | |
| | 86 of 318 | | ₪84,300 +8% | | 11 | | 91.0% +0.4 pp | |
| | by main space | | {Whole business} | | of 43 | | MTD vs prior MTD | |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| | New members (MTD) | | No visit yet (MTD) | | | | | |
| | 14 | | 4 of 27 | | | | | |
| | {Whole business} | | by main space | | | | | |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| |
| The switcher names the space. Tiles that follow it carry nothing; the two ignoring it are tagged.|
+--------------------------------------------------------------------------------------------------+5.5 Reports snapshot, desktop: All spaces
+--------------------------------------------------------------------------------------------------+
| [|] Reports [*] |
|--------------------------------------------------------------------------------------------------|
| Reports People: [(Main space) | Active in] [Export] |
| |
| STUDIO SNAPSHOT |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| | Active members | | Net receipts (MTD) | | Classes this week | | Attendance rate | |
| | 318 | | ₪84,300 +8% | | 43 | | 91.3% +0.6 pp | |
| | by main space | | MTD vs prior MTD | | Oct 11 – 17 | | MTD vs prior MTD | |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| Main hall 158 ██████░ 50% | Main hall 18 ███░ 42% | Main hall 91.4% |
| Parquet 86 ███░░░░ 27% | Parquet 11 ██░░ 26% | Parquet 91.0% |
| Open gym 61 ██░░░░░ 19% | Open gym 14 ██░░ 33% | Open gym 91.5% |
| No check-ins 13 4% | | |
| = 318 | = 43 | (ratios: no share bar) |
| |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| | New members (MTD) | | No visit yet (MTD) | | | | | |
| | 14 | | 27 | | | | | |
| | joined this month | | by main space | | | | | |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| Main hall 7 · Parquet 4 · Open gym 3 · no check-ins 13 = 27 |
| |
| With "Active in": Main hall 196 · Parquet 131 · Open gym 104 = 431* |
| * Members who train in several spaces are counted in each, so rows add up to more than 318. |
| No tags in All spaces: nothing on the page is filtered. |
+--------------------------------------------------------------------------------------------------+- The “People” toggle switches distinct-people tiles between main space (adds up) and active in (overlaps, footnoted).
- Reports has no second space control: the switcher is the only one.
5.6 Attendance tab, desktop: All spaces
+--------------------------------------------------------------------------------------------------+
| [|] Reports [*] |
|--------------------------------------------------------------------------------------------------|
| [ (Attendance) | Revenue | Retention ] Oct 1 – Oct 11 [All class types ▾] |
| |
| ATTENDANCE |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| | Members who visited| | Visits per member | | No-show rate | | Attended per class | |
| | 291 | | 4.0 | | 5.7% | | 6.1 | |
| | by main space | | per active member | | MTD | | MTD | |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| By main space: Main hall 151 · Parquet 82 · Open gym 58 = 291 [(Main space) | Active in] |
| Visits per visitor: Main hall 3.7 · Parquet 3.0 · Open gym 2.2 |
| No-show: Main hall 5.3% · Parquet 6.2% · Open gym 5.9% |
| Attended per class: Main hall 7.3 · Parquet 5.5 · Open gym 4.3 |
| |
| WHO CAME attended ▓ no-show ▒ unmarked ░ |
| All ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░ 1,284 · 80 · 42 |
| Main hall ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░ 702 · 41 · 25 |
| Parquet ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒░ 366 · 25 · 11 |
| Open gym ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░ 216 · 14 · 6 |
| |
| ATTENDANCE BY DAY (stacked by space, ≤5 then Other) |
| 160 | ▄▄ ▄▄ Open gym ░ Parquet ▒ Main hall █ |
| | ▄▄ ░░██ ▄▄ ▄▄ ░░██ ▄▄ ▄▄ |
| | ▒▒ ▒▒██ ▒▒ ▒▒ ▒▒██ ▒▒ ▒▒ |
| | ██ ████ ██ ██ ████ ██ ██ |
| +--1---2-----3---4---5-----6---7 … |
| |
| SPACES (selected range) Hall load Peak Waitlist/100 Late cancel Trials |
| Main hall 76% Sun 07:00 0.8 2.8% 14 |
| Parquet 69% Sun 19:30 1.7 4.1% 9 |
| Open gym 52% Thu 17:00 0.0 2.5% 3 |
| |
| PLAN COVERAGE VS. CHECK-INS BY SPACE (Reports only; plans drive no dashboard widget) |
| Space Plan covers it Checked in (60 d) Covered, never |
| Main hall available once plans are tied to spaces 196 — |
| Parquet available once plans are tied to spaces 131 — |
| Open gym available once plans are tied to spaces 104* — |
| * Columns don't add up across spaces: a member checks in at several, a plan covers several. |
| |
| BY CLASS TYPE (grouped by space, with subtotals) |
| CAPACITY 71.2%: Main hall 78.0 · Parquet 69.0 · Open gym 58.0 |
+--------------------------------------------------------------------------------------------------+5.7 Attendance tab, desktop: Parquet
+--------------------------------------------------------------------------------------------------+
| [|] Reports [*] |
|--------------------------------------------------------------------------------------------------|
| [ (Attendance) | Revenue | Retention ] Oct 1 – Oct 11 [All class types ▾] |
| |
| ATTENDANCE |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| | Members who visited| | Visits per visitor | | No-show rate | | Attended per class | |
| | 124 | | 3.0 | | 6.2% | | 5.5 | |
| | of 291 visitors | | visits ÷ visitors | | business 5.7% | | business 6.1 | |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| |
| ATTENDANCE BY DAY ── this space ·· whole business (faint, right axis) |
| 40 | ╭╮ ·· ·· |
| | ╭╮ ╭╮ ╭╯╰╮ ╭╮ ·· ·· ·· |
| | ╭╯╰──╯╰──╯ ╰──╯╰─ |
| +--1---2---3---4---5---6---7 … |
| |
| WHO CAME ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒░ 366 attended · 25 no-show · 11 unmarked |
| |
| No space names, no "Spaces" table, no plan-coverage block: breakdowns render in All spaces only. |
+--------------------------------------------------------------------------------------------------+- In one space, “visits per member” becomes “visits per visitor” (README §12.2) because members are not per space.
- The faint whole-business line appears only where comparing shapes helps (attendance by day, fill), never on raw counts.
5.8 Retention tab, Parquet
+--------------------------------------------------------------------------------------------------+
| [|] Reports [*] |
|--------------------------------------------------------------------------------------------------|
| [ Attendance | Revenue | (Retention) ] 6 months to Oct 11 |
| |
| {Whole business} Membership lifecycle has no space. One tag for the tab; the tiles carry none. |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| | Members on Oct 11 | | Joined / left | | Average tenure | | Still after 90 days| |
| | 318 | | 64 / 41 | | 412 days | | 84% | |
| | | | net +23 | | of those who left | | n = 58 | |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| |
| No attributed lines here: "Members by main space" and "Left by main space" are breakdowns, |
| shown under these tiles in All spaces only: |
| Members by main space: Main hall 158 · Parquet 86 · Open gym 61 · no check-ins 13 = 318 |
| Left by main space: Main hall 21 · Parquet 12 · Open gym 6 · no main space 2 = 41 |
+--------------------------------------------------------------------------------------------------+5.9 Revenue tab, any space
+--------------------------------------------------------------------------------------------------+
| [|] Reports [*] |
|--------------------------------------------------------------------------------------------------|
| [ Attendance | (Revenue) | Retention ] Oct 1 – Oct 11 [All methods ▾] |
| |
| {Whole business} Revenue isn't split by space. One tag for the tab; the tiles carry none. |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| | Net receipts | | Refunded | | Transactions | | | |
| | ₪84,300 | | ₪1,180 | | 412 | | | |
| | | | | | | | | |
| +--------------------+ +--------------------+ +--------------------+ +--------------------+ |
| |
| NET RECEIPTS BY MONTH · HOW PEOPLE PAID: unchanged from today, same in every space. |
| In All spaces the tag line is gone: nothing on the page is filtered. |
+--------------------------------------------------------------------------------------------------+5.10 Reports, phone: Parquet and All spaces
+------------------------------------+ +------------------------------------+
| [|] [(o) Parquet ▾] Reports [*] | | [|] [(=) All spaces ▾] Rep… [*] |
|------------------------------------| |------------------------------------|
| Reports | | Reports |
| | | People [(Main space)|Active in] |
| STUDIO SNAPSHOT | | |
| Active members 86 of 318 | | STUDIO SNAPSHOT |
| by main space | | Active members 318 |
| Net receipts ₪84,300 | | Main hall 158 ██████░ 50% |
| {Whole business} | | Parquet 86 ███░░░░ 27% |
| Classes this week 11 of 43 | | Open gym 61 ██░░░░░ 19% |
| Attendance rate 91.0% | | No check-ins 13 |
|------------------------------------| | Net receipts ₪84,300 |
| ATTENDANCE | |------------------------------------|
| Members who visited 124 of 291 | | SPACES (range) |
| No-show rate 6.2% (biz 5.7%) | | Main hall 76% · peak Sun 07:00 |
+------------------------------------+ | Parquet 69% · 1.7 waitlisted/100 |
| Open gym 52% · peak Thu 17:00 |
+------------------------------------+6. The coach’s phone home in their space, and the kiosk at the door
6.1 Coach who works in Parquet, between classes
+------------------------------------+
| [|] (o) Parquet Overview [*] |
|------------------------------------|
| Good evening, Lior |
| Sunday, Oct 11 |
|------------------------------------|
| NEXT CLASS · in 25 min |
| 18:00 Weightlifting |
| 12/16 booked · 2 new · 1 |
| missing waiver |
| (( Open check-in )) |
| [ Roster ] [ Today's workout ] |
|------------------------------------|
| LATER TODAY |
| 19:30 CrossFit · Dana 16/16 › |
|------------------------------------|
| NEEDS YOU |
| Amit Cohen: first class today › |
| Noa Levi: injury note (knee) › |
|------------------------------------|
| Other halls: pick All spaces in |
| the switcher. No payments or leads.|
+------------------------------------+- The coach’s agenda (next class, later today) carries no space names (README §7.6). The board’s rows say where a class is.
6.2 Kiosk door mode (tablet at the Parquet door)
+---------------------------------------------------------------------------------+
| PARQUET 18:02 · Sunday |
|---------------------------------------------------------------------------------|
| NOW Weightlifting · Lior · 18:00–19:00 12/16 checked in |
| |
| +-------------------+ [ Noa L. ✓ ] [ Amit C. ] [ Shira B. ✓ ] |
| | | [ Ido M. ✓ ] [ Tal A. ] [ Ron K. ✓ ] |
| | QR code | [ Yael S. ✓ ] [ Omer D. ✓ ] [ Gil P. ✓ ] |
| | scan to check in| ... |
| +-------------------+ |
| |
| NEXT CrossFit · Dana · 19:30 switches over automatically |
+---------------------------------------------------------------------------------+
/[lang]/kiosk/space/<parquetId>. Roster fields are the same as today's kiosk.
A revoked assignment ends the roster on the next poll ("This tablet's access to Parquet ended").7. A link to a space outside a restricted staff member’s spaces
Most staff have every space, so this only happens after the owner restricted someone (README §6.5). A coach restricted to Parquet opens a link to Main hall (schedule?space=<mainHallId>).
desktop
+----------------------------+---------------------------------------------------------------------+
| [CR] CrossFit Rishon City | [|] Schedule [*] |
| (o) Parquet |---------------------------------------------------------------------|
| | Main hall isn't in your spaces, showing Parquet. |
| Overview | |
| CLIENTS | Schedule (( + New session )) |
| Members | [‹] Oct 11 – 17, 2026 [›] [Today] [Week] [Day] |
| Messages | +-----------------+-------+-------+-------+-------+-------+------+ |
| TRAINING | | v Parquet | ... | ... | ... | ... | ... | ... | |
| >Schedule | +-----------------+-------+-------+-------+-------+-------+------+ |
| | YOURS IN OTHER SPACES |
| | Sun 12:00 Barbell clinic · you coach it |
+----------------------------+---------------------------------------------------------------------+
phone
+------------------------------------+
| [|] (o) Parquet Schedule [*] |
|------------------------------------|
| Main hall isn't in your spaces, |
| showing Parquet. |
|------------------------------------|
| Schedule |
| v Parquet 3 today |
| 07:00 Mobility · Maya 9/16 › |
| … |
+------------------------------------+- The URL is replaced with Parquet before anything loads, so the server’s 403
space_not_in_scopeis never shown; it only guarantees no Main hall data reaches the client. - The line is a quiet status row (
role="status"), not a lock or an error page. It disappears on the next switch. - The sessions the coach teaches in Main hall stay visible under “Yours in other spaces”, without a space name (README §7.6).
8. Owner tools: the class type’s space, the default space, and restricting a staff member
8.1 Changing a class type’s space previews the move
+--------------------------------------------------+
| Move future sessions? |
| |
| 12 future CrossFit sessions move from Parquet |
| to Main hall. Past sessions stay where they were.|
| 3 sessions moved to other spaces by hand stay. |
| |
| 2 clash in Main hall (exclusive): |
| · Tue 14 Oct 18:00 · with Barbell clinic |
| · Thu 16 Oct 18:00 · with Barbell clinic |
| |
| ( ) Leave the 2 clashing sessions in Parquet |
| ( ) Move them anyway. Reason: |
| [ ] |
| |
| [ Cancel ] (( Move 12 sessions )) |
+--------------------------------------------------+- Opened from the class type sheet when its “Space” changes. Nothing moves until confirmed.
- “Follows the class type” = the session’s space equals the class type’s previous space. Sessions moved by hand don’t match, so they stay.
- The override choice (owner/admin only) writes the same
class_session.space_overrideaudit rows as a single move.
8.2 Settings → Spaces: the default space
+----------------------------+---------------------------------------------------------------------+
| (sidebar) | Settings › Spaces (( + Add space )) |
| | +----------------+-------------------+----------+---------+------+ |
| | | Name | Address | Capacity | Mode | | |
| | |----------------+-------------------+----------+---------+------| |
| | | Main hall | Ha-Melacha 4 | 30 | Excl. | ... | |
| | | Default space | | | | | |
| | | Parquet | Ha-Melacha 4 | 16 | Excl. | ... | |
| | | Open gym | Ha-Melacha 4 | 20 | Shared | ... | |
| | +----------------+-------------------+----------+---------+------+ |
| | Sessions without another space go to the default space. |
| | "..." menu: Edit · Make default · Deactivate (moves future |
| | sessions to the default space after a preview, as in §8.1). |
+----------------------------+---------------------------------------------------------------------+- A business with no spaces gets an automatic “Main space”. While it is the only one, nothing about spaces appears anywhere.
8.3 Restricting a staff member (owner only, optional)
+----------------------------------------------------------+
| Lior · Coach [x] |
|----------------------------------------------------------|
| Spaces |
| (•) All spaces (default: Lior can work in every space) |
| ( ) Only these spaces |
| [x] Parquet [ ] Main hall [ ] Open gym |
| |
| Lior always sees the sessions he coaches. Members, |
| plans and leads are never limited by space. |
| |
| (( Save )) |
+----------------------------------------------------------+9. Reserved: the network (HQ) level
Not built. This frame only fixes where the level would go, so nothing built now has to move.
reserved trigger (not rendered today)
+-----------------------------------------+
| [NW] Rishon Network › | leading slot, reserved
| [CR] CrossFit Rishon City |
| (o) Parquet ▾ |
+-----------------------------------------+
reserved menu group (not rendered today)
+-----------------------------------------+
| NETWORK |
| [NW] Rishon Network · overview | would open /[lang]/network/<id>/…
|-----------------------------------------|
| SPACES |
| … |
| SWITCH ORGANIZATION |
| … |
+-----------------------------------------+
reserved page shell (not routed today)
+----------------------------+---------------------------------------------------------------------+
| [NW] Rishon Network ▾ | [|] Branches [*] |
|----------------------------|---------------------------------------------------------------------|
| Branches | Branches |
| Reports | +-------------------------+---------------+-------------+-------+ |
| | | Branch | Spaces | Members | ... | |
| | | CrossFit Rishon City | 3 | 318 | | |
| | | Demo Branch B | 1 | 120 | | |
| | +-------------------------+---------------+-------------+-------+ |
| | Placeholder only. Needs TKN-386 (network model) and TKN-387. |
+----------------------------+---------------------------------------------------------------------+- Seams kept today:
WorkingContext.level(only'branch'), the/[lang]/network/*namespace (reserved, not routed), the leading slot in the trigger. - Today an HQ person moves between branches with SWITCH ORGANIZATION and sees one branch at a time (TKN-28).