Fiore Wellness & Aesthetics 8:00 AM – 11:00 PM Local only
Pending assignment Upcoming In progress Completed Cancelled 2+Group booking

Edit names directly. Renames will update all existing reservations automatically. These are the people who can be assigned to bookings — they don't log into this system themselves (see the Access tab for who can).

Edit or add services. "Other — please specify" is always available in the booking form. The dropdown next to each service sets which role it needs — used to flag pending (unassigned) bookings with "Needs Hairstylist", "Needs Nail Tech", etc. Saves instantly when changed.

Only the names listed here can open and use this system — everyone else (nail techs, lash techs, therapists, hairstylists in the Staff tab) can be booked, but can't log in. Tap to set an optional PIN so a name can't be picked by anyone else.

Enter your Supabase credentials below, then run the one-time SQL in your Supabase dashboard to create the required tables. After that, all devices sharing the same credentials will stay in sync automatically.

ONE-TIME SQL SETUP — run this once in Supabase → SQL Editor
-- 1. Reservations (time in & time out per staff)
create table if not exists fiore_reservations (
  id           text         primary key,
  date         text         not null,
  therapists   text[]       not null default '{}',
  customer     text         not null,
  service      text         not null,
  start_time   text         not null,
  end_time     text,
  duration     numeric(4,2) not null,
  status       text         not null default 'upcoming',
  notes        text         default '',
  created_by   text,
  created_at   timestamptz  default now(),
  updated_at   timestamptz  default now()
);
alter table fiore_reservations add column if not exists created_by text;
alter table fiore_reservations enable row level security;
create policy "fiore_res" on fiore_reservations for all using (true) with check (true);
do $$ begin alter publication supabase_realtime add table fiore_reservations; exception when duplicate_object then null; end $$;

-- 2. Daily duty roster
create table if not exists fiore_duty (
  date       text        primary key,
  roster     jsonb       not null default '{}',
  updated_at timestamptz default now()
);
alter table fiore_duty enable row level security;
create policy "fiore_duty" on fiore_duty for all using (true) with check (true);
do $$ begin alter publication supabase_realtime add table fiore_duty; exception when duplicate_object then null; end $$;

-- 3. Shared settings (staff list, services)
create table if not exists fiore_settings (
  key        text        primary key,
  value      jsonb       not null,
  updated_at timestamptz default now()
);
alter table fiore_settings enable row level security;
create policy "fiore_set" on fiore_settings for all using (true) with check (true);
do $$ begin alter publication supabase_realtime add table fiore_settings; exception when duplicate_object then null; end $$;

After running the SQL and saving your credentials, click Save changes. The sync badge in the top bar will turn green when connected.