RosteraStaff Shift Scheduler & Rota
Self-hosted staff shift scheduler — a weekly rota, exact hours, double-booking caught.
No sign-up, no password — the demo opens already signed in, on sample data.
- Full PHP source included
- Instant download + licence key
- It never phones home
- Compare vs SaaS pricing →
The problem it solves
Cafés, shops, clinics, and small ops teams build the weekly rota in a spreadsheet or a group chat — and every week it goes wrong the same ways: two people booked for the same shift, someone quietly pushed past their hours, an overnight shift counted wrong, and no clean copy to hand the team. Scheduling SaaS fixes it but charges per employee every month, and usually tries to bolt on payroll and a time clock you didn't ask for.
- Double-bookings and gaps nobody spots until the shift
- Weekly hours that don't add up, and overnight shifts counted wrong
- Per-seat monthly SaaS, bundled with payroll/time-clock you don't want
What you get
Publish a week and each employee with an address gets their own shifts — just theirs — through your own SMTP. Off by default; an invalid address is stored blank rather than wrong.
Per-employee and whole-roster token-guarded .ics feeds: staff subscribe once and published shifts appear in their own calendar. Revoke a token and that feed goes dark.
Staff down the side, the seven days of the chosen week across the top; navigate week to week with a configurable week-start day.
Each shift has a date, start/end time, role or location, and a draft/published status — assigned to a person or left open for anyone to pick up. Shifts that cross midnight are handled correctly.
Times are stored as integer minutes, never floats, so each person's weekly total is exact to the minute, shown against an optional weekly-hours target.
An overlapping shift for the same person is blocked; clean back-to-back hand-overs are allowed; correct even for overnight shifts that spill into the next day.
A shift on a spring-forward or fall-back day counts the true elapsed time — a lost hour in spring, a gained hour in autumn.
Publish a week (or one shift) in a click, print a dependency-free PDF of the rota grouped by person, and export a spreadsheet-formula-injection-hardened CSV; plus an hours report over any date range.
Add it to a phone or tablet home screen straight from the browser — a full-screen app served from your own server, with no app store involved. Business data is never cached offline, so what you see is always live.
Rostera 2.0 adds the 2.0 owner layer. Upgrade by replacing the files — the database migrates itself, and it is still the same one-time purchase.
- REST API with an OpenAPI spec and signed webhooks
- Two-factor sign-in (TOTP)
- Email notifications through your own SMTP
- CSV import with a mandatory dry run
- One-click backups
- Dark mode
Shift swaps run offer, accept, decide once — approval re-checks the overlap rule for whoever takes the shift at the moment it is granted, so a swap can never create a double-booking. Over MCP, assigning a shift hits the same guard and refuses a conflict by name. The weekly roster PDF is the print-and-pin artifact.
- Roles with email invitations and a last-admin guard
- Append-only audit trail across browser, API and agent
- Your logo and colours throughout
- Scheduled backups with a guided dry-run restore
- Optional single sign-on (OIDC)
The 3.1 wave gave the catalogue a way to reach the other side of the transaction: counterparty email through your own SMTP server, calendar feeds your own calendar subscribes to, attachments filed where the paperwork belongs, and export presets other people's software imports. Every outbound path ships switched off, runs on your own credentials, and can never break the thing that triggered it. What this app gained is listed at the top of this section.
Pricing — one-time, yours forever
- ✔ Full source included — PHP you can read and change
- ✔ No subscription. One payment, yours forever
- ✔ It never phones home
- ✔ Your data stays on your server
Which licence do I need?
It comes down to how many installations you need. Running your own business on one site is the Single licence. Building or running sites for other people — a second domain of your own, or an installation a client keeps — is the Extended licence.
Single licence
One (1) domain or subdomain
One business, running it on one site.
- Install it on one domain or subdomain you own or operate
- Change the source however you like for that installation
- Run your own business on it commercially, client work included
- Re-download the current build any time from your buyer portal
- A second site, or an installation you hand to a client as theirs, needs the Extended licence
- No reselling, redistributing or sublicensing the source
- Not for offering it to other people as a hosted service
Extended licence
Unlimited sites you own or operate
Agencies, and anyone running it on more than one site.
- Everything the Single licence grants
- Install it on as many domains as you own or operate — no cap on the number
- Build and hand over one installation per client project
- Still no reselling or redistributing the source itself
- Running it as a multi-tenant service others sign up for needs a SaaS agreement
Every download carries the full terms as LICENSE.txt, and the licence you bought is
named on your order and in your buyer portal. The complete wording lives on the
terms page, and the live demo is free for as long
as it takes to decide.
No reviews yet — so here is what we offer instead. Every competitor price on our comparison pages is source-linked and dated, and when a vendor’s price won’t load we say so rather than guess. See the sources for yourself →
Honest limitations
What it does not do — written down before you buy, and kept true on purpose.
- Not a time clock: it plans and publishes shifts; it does not capture attendance.
- No pay rates, ever — hours and coverage, not wages.
- Swap requests exist; approving a swap is always a human act — there is no automated swap engine.
- Email goes through your own SMTP server; telling staff about a published rota is off until you switch it on.
- Single-tenant: one business per installation.
2-minute web installer, plain PHP 8 + MySQL (or SQLite for a trial), no Composer or build step — Docker image included.
Covered in these guides
The limitation-smash release: your tools now write to the people they serve — client emails through your own SMTP, calendar feeds, attachments, export presets — every one of them off until you switch it on.
Platform, rota, waivers, leave, equipment. Five subscriptions priced from each vendor's own page, totalling $2,232 a year — and the single largest line is the one most gyms should not be buying at all.
Till, rota, leave, food-safety checks, expenses. Five subscriptions nobody reviews, priced from each vendor's own page. The total is $2,214 a year — and roughly half of it can be removed without buying anything.
Deputy charges $5–$9 per user per month to schedule shifts. We did the 3-year math for a 15-person team from Deputy's own published prices, and we say plainly where Deputy still wins.
A small clinic runs booking, waivers, a staff rota and expenses. We priced the hosted options from their own pages and worked out which layers are worth owning outright — and which are not, including the one that disqualifies most self-hosted booking tools.
Questions about Rostera
Is Rostera payroll?
No. It plans shifts — who works, when, and for how long. It holds no pay rates or wages, calculates no pay, and moves no money. Zero payment surface, by design.
Is it a time clock?
No. Shifts are planned hours, not clock-in / attendance records — there is no time or biometric capture. It is a scheduling and planning tool.
How exact are the hours?
Exact to the minute. Times are stored as integer minutes and summed in PHP, with DST-correct shift lengths — the shipped 130-assertion suite covers overnight shifts and both DST transitions.
MySQL or SQLite?
Either — SQLite for a zero-config trial, MySQL/MariaDB for production on ordinary shared hosting.
What if the developer disappears?
You get the full PHP source and your rota lives in one database you own — nothing phones home, nothing expires.
How do staff see the published rota?
Three ways: in the app, as a PDF on the wall, or in their own calendar — each employee (or the whole roster) has a token-guarded .ics feed Google/Outlook/Apple polls. Publishing can also email each person their own shifts, off until you turn it on.