section
Shift · Workforce Management
iOS 18+ · Swift · Supabase · EN/ES · 4 locations
Shift
Workforce management · iOS 18+
A clock-in / scheduling / payroll-review app for multi-location teams. Native iOS for staff & managers, web fallback for Android & outages, Supabase for data, third-party payroll for export.
Platform
iOS 18+ · Swift 6
Backend
Supabase (Postgres + RLS)
Auth
Google SSO (work email)
Locations
NY · PHL · DAL · LA
Roles
6 (Server, Kitchen, Driver…)
Languages
English + Spanish
Geo
CoreLocation + geofence
Scale
100–1,000 active users
What's in this canvas
  1. 11 employee screens — login through profile
  2. 8 admin screens — ops, approvals, payroll, analytics
  3. System architecture (Supabase + APNs + payroll partner)
  4. Postgres data model with RLS notes
  5. Web app failover wireframe (Android + outage)
  6. Push notification examples
  7. GitHub README outline
Tweaks panel (bottom-right) · switch language, dark mode, accent, role, location, shift state.
Overview
System architecture
iOS 18+ app · Swift 6CoreLocation · APNs · Sign-in with GoogleWeb fallback · Next.jsAndroid · outage · IndexedDB queueSupabase AuthGoogle Workspace SSOSupabase Postgres9 tables · RLS per org/locRealtime + StorageLive shifts · pay stubsEdge FunctionsGeofence · payroll exportAPNsPush · reminders · summariesPayroll partnerGusto / Rippling / ADPCoreLocationGeofence · CLLocationManager
Auth → SSO via Supabase. Data → Postgres + Realtime. Geo → CoreLocation feeds clock-in. Push → APNs from Edge Functions. Payroll export from Edge → 3rd-party partner.
System architecture
section
Employee app
Clock in/out · breaks · schedule · requests · profile · EN/ES
9:41
JD Meals
Shift Manager
Your schedule, shifts, and reports.
Use your work Google account
SSO via Supabase Auth · Google Workspace
01 · Sign in
01 · Sign in (Google SSO)
9:41
Welcome back, Dan
Today
Off shift
Upcoming shift
11:00 AM – 7:00 PM
Chef · Restaurant — Midtown
You are here · 212 W 45th St, New York, NY
Inside geofence · Accuracy ±8m
This pay period
32.5h
of 40h scheduled
Notifications
3
2 new this week
Let your team know if there's an issue
Home
Schedule
Hours
Requests
Profile
02 · Home (off-shift)
02 · Home · clock in
9:41
Today
On shift
On shift
2h 14m
Clocked in 11:00 AM
212 W 45th St, New York, NY±6m
Location
New York · Restaurant — Midtown
Home
Schedule
Hours
Requests
Profile
03 · Active (shift)
03 · Active shift · shift
9:41
Schedule
Week
Month
Mon
28
11–7
Chef · NY Central Park
Scheduled
Tue
29
11–7
Chef · NY Central Park
Scheduled
Wed
30
No shift
Thu
31
4–11
Chef · NY Central Park
OK
Fri
32
4–11
Chef · NY Central Park
OK
Sat
33
10–4
Sous chef · NY Central Park
OK
Sun
34
No shift
Home
Schedule
Hours
Requests
Profile
04 · Schedule · week
04 · Schedule · week
9:41
Schedule
Week
Month
M
T
W
T
F
S
S
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
April · 78h scheduled
W14
W15
W16
W17
W18
Home
Schedule
Hours
Requests
Profile
04 · Schedule · month
05 · Schedule · month
9:41
Hours
This pay period · Apr 22–May 5
32.5
/ 40 hrs
Hours worked
32.5h
Hours scheduled
40.0h
Overtime
1.0h
Weekly history
Apr 1–7
38.5h
Apr 8–14
+1h overtime
41h
Apr 15–21
36.5h
Apr 22–28
32.5h
Home
Schedule
Hours
Requests
Profile
05 · Hours summary
06 · Hours summary
9:41
Time off
Submit
From
Mon, May 12
To
Wed, May 14
Type
Vacation
Sick
Personal
Unpaid
Note
Family wedding out of state. PTO balance: 6.5 days available.
Manager will be notified · usually approved within 24h
06 · Request time off
07 · Request time off
9:41
Swap shift
Submit
Your shift
Fri, May 2
4:00 PM – 11:00 PM
Chef · NY Central Park
Offer to teammates (Server)
D
Diego R.
Available
P
Priya S.
Available
J
Jordan T.
Conflict 6–10
A
Aisha N.
Available
07 · Swap / reschedule
08 · Swap / reschedule
9:41
Notifications
New schedule posted
2h ago
Week of May 5 — 4 shifts
Time off approved
1d ago
May 12 – May 14 · Vacation
Shift starts in 1 hour
2d ago
Today 11:00 AM · NY Midtown
Swap accepted
3d ago
Diego R. picked up Fri 4–11
You’ve been on break for 15 min
5d ago
Apr 24 · Auto-ended at 30m
Pay stub available
1w ago
Apr 8 – Apr 21 · $1,284.50
Home
Schedule
Hours
Requests
Profile
08 · Notifications
09 · Notifications
9:41
Profile
DD
Dan Dorado
Chef · NY Central Park
Hired Aug 2018 · ID #MC-2419
Availability
M
T
W
T
F
S
S
Available 7 AM – 11 PM · Tap a day to edit
Contact
dan.dorado@jdmeals.com
(212) 555-0142
148 Bleecker St, New York
Language
English
Español
Documents
Tax · I-9 · Stubs
Sign out
Home
Schedule
Hours
Requests
Profile
09 · Profile
10 · Profile + availability
9:41
Cancel
Address
Save
Street
148 Bleecker St
Apt / Unit
3B
City
New York
State
NY
ZIP
10012
Emergency contact
Name
Linh Chen
Relationship
Spouse
Phone
(212) 555-0188
10 · Edit address
11 · Edit address
section
Data model
Postgres schema · row-level security per org / location
Data model · Postgres
RLS: every row scoped by org_id; managers see their location, admins see all.
orgs
  • id
  • name
locations
  • id
  • org_id ↗
  • name
  • subtype
  • geofence
users
  • id
  • org_id ↗
  • email
  • role
  • lang
employments
  • id
  • user_id ↗
  • location_id ↗
  • role
  • rate
shifts
  • id
  • employment_id ↗
  • start
  • end
  • published
punches
  • id
  • shift_id ↗
  • type
  • ts
  • geo
requests
  • id
  • user_id ↗
  • type
  • status
  • payload
pay_periods
  • id
  • org_id ↗
  • start
  • end
  • status
notifications
  • id
  • user_id ↗
  • kind
  • body
  • read_at
Tables & columns
section
Web fallback (Android + outage)
Next.js PWA · same Supabase · offline queue
Web app · failover
Next.js PWA on Vercel. Same Supabase backend. Offline IndexedDB queue replays on reconnect.
shift.work
Welcome back, Dan
Today · NY Central Park
Upcoming shift
11:00 AM – 7:00 PM
Hours this period
32.5h
Offline queue: 0 pending punches
Browser app · clock in
section
Push notifications
APNs payload examples · employee + manager
Push notifications
APNs payloads · iOS lock-screen stack
Shift starts in 1 hour
Today 11:00 AM · NY Central Park
now
Time off approved
May 12 – May 14 · Vacation
now
Pay stub available
Apr 8 – Apr 21 · $1,284.50
now
Late arrival
Diego R. is 12 min late · cover requested
now
Lock screen
section
GitHub repo · README
Stack, layout, local dev, environments, i18n, privacy
README outline
shift / monorepo
Stack
iOS 18+ Swift 6 · Supabase · Next.js fallback · APNs · Google SSO
Repo layout
/ios · /web · /supabase (migrations, edge fns) · /docs · /infra
Local dev
Xcode 16 · pnpm dev · supabase start · seed.sql for fixtures
Environments
preview · staging · prod · per-env Supabase project, separate SSO clients
i18n
EN/ES via String Catalogs (iOS) and per-locale JSON (web)
Privacy & security
RLS on every table · CoreLocation only with consent · audit log of approvals
Payroll partner adapter
CSV today · Gusto/ADP/Rippling export TBD · idempotent batch IDs
Failure modes
Offline punches queued in IndexedDB · APNs degrade to in-app inbox
README outline
Tweaks
Locale
Language
Theme
Dark mode
Accent
Surface
Role
Demo state
Location
Shift state