ThreadScan Ops Hub

Real-time Fabric Digitizer

Designed for capturing 5,000+ fabric samples in physical inventory using instant photographer-to-tagger workspace matching.

Supabase Connection Active
Role 1

The Photographer (Mobile Capture)

Optimized for fast-paced smartphone operation. Snaps high-fidelity pictures of physical fabric samples. Automatically uploads to bucket storage and broadcasts changes instantly.

Standard System Camera trigger Fast auto-reset bucket pipeline Visual upload progress indicators
Open Camera Workspace
Role 2

The Tagger (Desktop Workspace)

The moment a photo is captured on the phone, the desk display refreshes automatically without requiring manual navigation. Tag fabric styles, produce live QR codes, and archive.

Real-time PostgreSQL subscription Automatic client fields focus QR Generator (printable/copyable SVG)
Launch Tagger Dashboard

Required Supabase DB Setup Code

Open your Supabase SQL Editor and run the commands below. This creates the active fabrics list database table, enables real-time changes replication, sets default open policies, and initiates the fabric-images storage container.

-- 1. CREATE FABRICS TABLE
create table if not exists fabrics (
  id uuid default gen_random_uuid() primary key,
  image_url text not null,
  name text,
  qr_code_id text,
  status text default 'pending', -- 'pending', 'completed', or 'discarded'
  rejection_reason text,
  discarded_at timestamp with time zone,
  created_at timestamp with time zone default now()
);

-- 2. ENABLE REALTIME REPLICATION FOR THE FABRICS TABLE
alter publication supabase_realtime add table fabrics;

-- 3. ENABLE ROW LEVEL SECURITY & PERMIT PUBLIC ACCESS FOR SPEEDY SETUP
alter table fabrics enable row level security;

create policy "Allow all public operations for fabrics"
  on fabrics for all
  using (true)
  with check (true);

-- 4. INSERT STORAGE BUCKETS AND CONFIGURE POLICIES
insert into storage.buckets (id, name, public)
values ('fabric-images', 'fabric-images', true)
on conflict (id) do nothing;

create policy "Allow public uploads onto fabric-images"
  on storage.objects for insert
  with check (bucket_id = 'fabric-images');

create policy "Allow public read access of fabric-images"
  on storage.objects for select
  using (bucket_id = 'fabric-images');

Dual Workspace Environment • Next.js Realtime Hydration • Supports Mobile Chrome, iOS Safari & Standard Desktop Browsers