Three roles share one workflow: coordinators plan meals and open them for orders, crew tap a share link and submit, facility hospitality tracks every meal to stage. This guide walks each surface with a schematic mockup of the actual page, key buttons called out, and answers to the most common "wait, where do I…" questions.
meals.mixops.io/pmeals.mixops.io/o/<token>/v/<token>.meals.mixops.io/f
The plan page (meals.mixops.io/p) is your home base.
Pick a production, scroll to the day, hit + new session,
and the modal that pops up has every field you need — restaurant,
venue, deadline, menu link, notes — without any "create → navigate → edit"
dance. Plan-page access is gated to the production creator + members
with the coordinator role. Anyone else gets bounced to
their personal-history page with a friendly "coordinator access needed"
explanation.
One screen, all the fields. Restaurant at the top (with the cuisine rolodex on hand if you'd rather pick by genre). Then date, venue, deadline, optional menu link, optional notes. Save and you land straight in the new session — no extra navigation, no "go edit it now to add the deadline."
/o/<token>) and anyone on the production-wide page
(/a/<token>) see the new status within ~10 seconds —
or instantly when they tab back to that page. No manual refresh
needed on any surface.
Can't decide what to order? Drop the session into Poll mode. Crew get a voting UI instead of the order form, and you get a vote-weighted spin wheel to pick the winner. Two-stage flow: pick a cuisine genre, then spin through restaurants in that genre (the cuisine rolodex has Culver City options pre-seeded; add more anywhere).
Crew don't sign in. The coordinator's share link IS the credential — one URL per session. Tap it on your phone, type what you want, submit. The page auto-refreshes status every ~10 seconds so when the coordinator advances a stage, you see it — no manual reload.
meals.mixops.io/poster/<token>) with a giant QR
code. Tape it to the stage door — crew scan with their camera and
land directly on the order page.
Every meal you've placed across the production, in one list. Useful for expenses, tracking weekly orders, or just curiosity. Looked up by your email — no login required, same token as the order link.
One bookmark-able URL that shows every upcoming session in the production, with per-session status chips. Anyone with the production token can place orders across multiple sessions in one sitting. Auto-refreshes every ~10 seconds.
Once a session is submitted, the kanban picks it up. 5 lanes, earth-tone progression — Placed → En route → Arrived → Out to stage → Done. Earth tones get warmer/more urgent as cards move right. Runners + hospitality coordinate the last mile to stage from here.
Every session moves through 4 planner stages before it hands off to the hospitality kanban. The plan page shows these as a clickable stepper. Crew see a read-only pill. Production-all shows a per-session chip. All three surfaces tell the same story — they're reading the same field through the same lens.
Stages can be jumped (click any stage on the plan page). Backward jumps prompt a confirm. After Submit, the hospitality side adds 5 more stages — Placed, En route, Arrived, Out to stage, Done — that live on the kanban.
/o/<token>, /a/<token>) within
~10 seconds via a background poll, AND instantly when the user tabs
back to a page. Crew tabs that were already open update on their own
— no manual reload, no "ping the team to refresh."
Crew change their minds. The flow depends on whether the session has been submitted to hospitality yet.
Session in Draft or Open, deadline not passed: crew re-open the share link and edit their order directly. The aggregate updates. Coordinator sees the change in their orders panel on next poll tick (~10s).
Once a session moves to Submit, the order form on
/o/<token> disappears — replaced with "submitted to
hospitality, no more orders." If a crew member sends a late
amendment via text/Slack, the coordinator has three choices in their
pending panel:
cs@<facility>.The things people ask the most, with a concrete answer for each.
/p and got "coordinator access needed."
The plan page is gated to the production creator + members with
role coordinator. If you're on a production as
crew, you'll get bounced. Ask the production creator
(or an existing coordinator) to upgrade your role via the
Members panel.
You can still place orders via the share link the coordinator
sends you (/o/<token>), and see your personal
history at /v/<token>.
Force-close the browser and re-open the link. If the same thing happens, try a different browser or your phone's data instead of wifi. The order page initializes within ~2 seconds normally; a hang past 8 seconds shows a retry button.
If it still hangs, the share link may be invalid (typo, or coordinator deleted the session). Ask for a fresh link.
You're probably still in Draft. Hit the status bar's advance button → "Open for orders". Once status is Open, crew on the share link see the order form. (If they already had the page open, they see it within ~10 seconds without refreshing.)
Yes. Click the Open stage on the status bar — you'll get a confirm dialog asking "reverse back to Open?" Confirm and the session re-opens for orders. Crew already on the page see it flip back within ~10 seconds.
The actual hospitality kanban side won't have done anything yet if you reverse quickly (within seconds of submitting), so no downstream cleanup needed.
On the plan page, scroll to the Crew panel. Each row has a remove control — click it, confirm. Past orders for that person are preserved in history (the name/items/notes denormalized at order time stay intact); the ghost profile just gets disconnected.
No. The production share token is stable for the life of the production. You can mint it once on the plan page (Share production link button), send it to the director / hospitality / execs, and they bookmark it. New sessions auto-appear in the list as they're created. The URL doesn't change.
If you ever DO need to rotate the token (e.g., it leaked), the coordinator can revoke + remint in the production settings.
All work. The meal portal is CSP-strict and uses inline modules + external assets that load behind content blockers gracefully (a blocked Google Fonts fetch falls back to system fonts; JS still runs).
The one historical caveat: if you have an aggressive content blocker AND your phone's browser was previously confused by a stale cache, force-close-and-reopen clears it.
The poll runs every 10 seconds and also fires when you tab back to the page. If neither has happened (you've been on the page less than 10s and haven't tabbed away/back), it just hasn't ticked yet — wait a few seconds or briefly switch tabs.
If status genuinely hasn't propagated after 30+ seconds, check your network — phones on poor cell signal sometimes drop the background fetch silently. A full page refresh always works as a fallback.
No app needed — the share link works directly in your phone browser. If you want a homescreen icon, both iOS and Android support "Add to homescreen" from the browser menu; the page opens fullscreen like an app.
production_members.role = 'coordinator'.facility_members./o/<token>. One per session, acts as access credential. The /v/<token> personal-history URL takes the SAME token — the worker resolves it back to the production and surfaces every order by the viewer's email across that production./a/<production_token> · stable for the life of the production.