Staff
The people who work for the business, when they work, and what they're paid for it.
Staff holds the people who work for the business: their names, positions, home Location, whether they're still active, and the link to their own Stardeck sign-in. It also owns when each person works (a repeating week, day-by-day changes, time off), the shifts they worked, their hourly rates and commissions, and the pay runs a manager closes at the end of each period. POS needs it: the register's PINs and staff roles are POS's, and people clock in and out on the register. With Booking on, a person can be made bookable, and booking sells their hours from the Staff roster. Locations and their opening days come from Branches.
What it handles
- Linking a person to a real sign-in. A person can be linked only to an existing member of the organization, so a guessed account is refused. A retried update with the same request key is saved once, with one audit entry, and a change Starcat makes is signed and recorded as the agent's. Tested: "Staff: directory"
- Positions that stay tidy. A second position that differs only in case or spacing is refused. An archived position stays on the people who hold it but can't be given to anyone new, and an admin limited to one Location can't change the business-wide positions. Tested: "Staff: directory"
- A roster that matches the clock. A day off comes out of the roster and the person's week, and a reset brings it back. A shift past midnight stays on the day it starts. Copying last week's changes happens once, and a reset at one Location leaves the others alone. Attendance is flagged as late, early or absent against the roster, and nobody is marked absent while the time clock is off. Tested: "Staff: roster"
- Paying the rate that applied. Each shift is paid at the person's own hourly rate, or the business default. A raise reaches the shifts after it and leaves earlier ones alone, a rate can't start in the future, and a shift that crosses the period's start is paid only for its part inside. Tested: "Staff: hourly pay"
- Closing a pay run. The run is saved as the report showed it, and every shift and earning inside it is then locked, roster changes too. A close is refused before the period ends, twice, or over an open shift. Reopening and closing again makes version 2 while version 1 still reads as it was paid. A close that fails midway leaves nothing anyone can export and is cleared by the next close. Tested: "Staff: pay runs" Tested: "Staff: roster"
- Who sees people and pay. A Location's manager works only with their own people, and someone who can only read the directory can't change the roster, sees that a day is off but not why, and never sees rates. Readers can't close a pay run, and other Locations can't see it. Tested: "Staff: roster" Tested: "Staff: hourly pay" Tested: "Staff: pay runs"
- One schedule for staff and bookings. With Booking on and schedules turned on in Settings → Staff, booking sells a bookable person's hours straight from the roster, past midnight, days off and breaks included. Booking's own hours editors show that person read-only and refuse changes. A commission earned inside a closed pay period is carried to the period's end, once. Tested: "Staff + booking: one schedule" Tested: "Staff + booking: booking asks the roster"
- Commission on what the customer paid. A booking taken at a discount pays commission on the discounted amount, not the list price, so the business never pays commission on money it gave away. Tested: "Staff + booking: commission on a discounted booking"
- Retiring a bookable person. Taking someone off the roster retires them as a provider instead of deleting them, so bookings that already name them still resolve. A provider that a confirmed booking still holds can't be retired. Tested: "Staff: bookable providers"
What you build on top
- The register and bookings. Switch on POS for PINs and the time clock, and Booking to make
people bookable for services. With Booking on, a bookable person's page gets a Services tab
through the
staff.detail-tabslot. Another Module or your app can add its own tab there, for a person's training or equipment, say. See Extend a Module. - Pay settings. The pay period (weekly, fortnightly, twice a month or monthly) and the business's default hourly rate are set in Staff's settings.
- Photos. Staff photos need the optional
mediafile storage connected to the app. - Your words. Rename "Staff" for the business (a salon's "Team", say) with an override.
- In code. Your coding agent imports Staff only through its public API:
index.tsandserver/index.tsinapps/web/src/modules/staff/. See Build on a Module.
Limits
- Staff has no clock-in screen of its own. Shifts come from the POS register, or an admin enters them.
- A pay run works out hours, wages and commissions and exports them as a CSV. It doesn't pay anyone or work out tax and deductions.
Facts
- Kind: feature Module, can be switched on and off
- Needs: Audit log, Branches, Identity, Infra, Standard UI
- Needed by: POS
- Adds to these when they're on: Booking, Tour
- Added to by: Nothing
- Off by default for these business types: none
Pages
| Where | Path |
|---|---|
| Admin | /admin/staff |
Permissions
Admin holds every key. The other roles listed hold it when the app first gets the Module; after that, roles are yours to change under Settings → Roles & Permissions.
| Permission | What it allows | Organization roles that start with it |
|---|---|---|
staff:read | View the staff directory. | Admin, Manager, Staff, Viewer |
staff:write | Manage staff and platform account links. | Admin, Manager |
Data
- Tables:
staff,staff_position,staff_earning,staff_time_entry,staff_schedule_rule,staff_roster_day,staff_roster_shift,staff_pay_run,staff_pay_run_line - File storage
media: optional, shared across the organization
Slots
Places other Modules and your app code can add to. See Extend a Module.
staff.detail-tab
Tested workflows
- Staff: directory
- Staff: profile picture upload
- Staff: hourly pay
- Staff: roster
- Staff: pay runs
- Staff: Starcat acting for a person
- Convention: one roster read, one booking hours read (static scan)
- Staff in the admin search
- Staff numbers on the admin home
- Staff: bookable providers (with Booking on)
- Staff + booking: one schedule (with Booking on)
- Staff + booking: the record's week and visits (with Booking on)
- Staff + booking: booking asks the roster (with Booking on)
- Staff + booking: commission on a discounted booking (with Booking on)