stalls
Stalls list and Property Map
TL;DR
Open Stalls in the staff app. Use List to filter occupancy; switch to Map to place horses like the real aisle. Add a property, then add stalls, before you arrange the board.
- stalls
- map
- list
- occupancy
- properties
- units
For: Staff (owner / admin / manager / staff / trainer). Horse owners do not use the stall map; they see horses in the owner portal (/portal or /owner).
Route: /app/stalls (list) and /app/stalls?view=map (Property Map).
> Terminology: always horse owner / owner. Never “guest”.
How to open the board
- Sign in as staff and open Stalls in the nav (
/app/stalls). - If you manage more than one barn, pick the property (location) first — Map is one barn at a time.
- Use List View to filter occupancy, search a stall or horse, then Assign / move / clear.
- Switch to Map (
?view=map) for aisle-side work: drag horses, morning strip, stickers, print. - Need a new barn? Properties → Add property, then Add stall. The map stays empty until units exist.
Example
Willow Barn has 24 stalls and a turnout paddock. Monday morning, the barn manager opens Stalls → Map, confirms the property is Willow (not the annex), and drags two unassigned horses onto empty stalls. List view is for a quick “who is empty?” filter; Map is for placing horses the way the aisle actually looks.
▶Show details for AI/advancedexhaustive reference & AI context
Stall Board and Properties — Barnflow
For: Staff (owner / admin / manager / staff / trainer). Horse owners do not use the stall map; they see horses in the owner portal (/portal or /owner).
Route: /app/stalls (list) and /app/stalls?view=map (Property Map).
> Terminology: always horse owner / owner. Never “guest”.
How to open the board
- Sign in as staff and open Stalls in the nav (
/app/stalls). - If you manage more than one barn, pick the property (location) first — Map is one barn at a time.
- Use List View to filter occupancy, search a stall or horse, then Assign / move / clear.
- Switch to Map (
?view=map) for aisle-side work: drag horses, morning strip, stickers, print. - Need a new barn? Properties → Add property, then Add stall. The map stays empty until units exist.
Example
Willow Barn has 24 stalls and a turnout paddock. Monday morning, the barn manager opens Stalls → Map, confirms the property is Willow (not the annex), and drags two unassigned horses onto empty stalls. List view is for a quick “who is empty?” filter; Map is for placing horses the way the aisle actually looks.
What List and Map share
Both views read the same occupancy: horses.unit_id on units under a property. Capacity rules are the same:
- Inactive units cannot take a horse.
- A unit at capacity rejects the drop (single stalls typically
capacity = 1). - Pastures, paddocks, and run-ins can hold more than one horse.
Assigning, moving, and clearing from either view writes the same horse–unit link and is logged in audit_events.
List board
- Filter by property, occupancy status, and search (unit name or horse).
- See which stalls, paddocks, and pastures are free or full.
- Assign, move, or clear horses from a unit.
- Add stall creates a
unitsrow; Properties manages locations.
Properties (multi-location)
Barnflow is multi-location: many properties under one organization.
- Open Stalls → Properties (
/app/stalls/properties). - Add a property with a clear name (the physical barn / farm).
- Create units under that property (stalls, paddocks, pastures) with capacity.
- Use the global Location switcher so Today, stalls, and other lists match the barn you are standing in.
Owners and admins can use All properties in some lists. Property Map always requires a single property — if none is selected, the map asks you to pick one.
Units
- New unit from the stall board (
/app/stalls/new) or property context. - Edit type, name, capacity, notes (
/app/stalls/[unitId]/edit). - Optional saved map coordinates
units.map_x/units.map_y(cell grid, not GPS). Until those are set, the map auto-packs tiles by name so you still see every unit.
Property Map (overview of functions)
Toolbar on /app/stalls?view=map:
| Control | What it does | Help |
|---|---|---|
| Property picker | One barn at a time | this article |
| Search | Find horse or unit; dim the rest | Daily map work |
| Edit Layout | Arrange stall tiles | Arrange stalls |
| Sketch / Templates / Copy layout | Background + bulk positions | Layout tools |
| Print board | Print the canvas | |
| Intake | Place unassigned horses into empty stalls | Daily map work |
| Stickers / Heat | Care and occupancy cues | Morning strip & heat |
| List View | Back to the occupancy table | this article |
| Zoom + / − | Scale tiles (0.6–1.6) | Arrange stalls |
| Draw aisle / zone | Overlay lines and polygons | Aisles & zones |
| Morning strip | Empty / unassigned / care / health | Morning strip & heat |
Roles and access
- Any org staff member can view the stall board and place horses (RLS:
organization_members). - Aisles and zones:
owner/admin/manageronly (canEditMapOverlays). Staff and trainer roles see overlays but cannot draw or delete them. - Horse owners never see this staff map.
Data model (AI)
- Tenant:
organizations. Locations:properties. Stalls:units(property_id,capacity,map_x,map_y, type). - Occupancy:
horses.unit_id. Unassigned horses haveunit_idnull. - Overlays:
property_map_overlays(kindaisle\|zone, geometry in map-cell space, not lat/lng). - Mutations: server actions on
/app/stalls;audit_eventswith last-write-winsclient_mutation_idwhen offline. - Realtime (optional): map refreshes on
horseschanges scoped byorganization_id.
Scope every answer by organization + property. Never mix tenants.
Related
- Daily map work: operate and intake
- Arrange stalls on the map
- Draw aisles and zones
- Templates, sketch, and copy layout
- Morning strip, stickers, and heat
- Print the stall board
- Map questions, answered
AI retrieval keywords: stalls, stall board, property map, list view, occupancy, properties, units, map_x, map_y, capacity, unassigned, Barnflow, /app/stalls
Barn staff: Open a support ticket
Horse owners: Message your barn