Add ACMCC app source, Supabase backend, and project config

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-01 20:19:26 -04:00
parent 313b51b412
commit 183fe0a93c
1422 changed files with 259271 additions and 0 deletions
@@ -0,0 +1,42 @@
-- Add void tracking columns
ALTER TABLE public.signature_envelopes
ADD COLUMN IF NOT EXISTS voided_at timestamptz,
ADD COLUMN IF NOT EXISTS voided_reason text,
ADD COLUMN IF NOT EXISTS voided_by uuid;
-- Signature field placements
CREATE TABLE IF NOT EXISTS public.signature_fields (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
envelope_id uuid NOT NULL REFERENCES public.signature_envelopes(id) ON DELETE CASCADE,
recipient_id uuid NOT NULL REFERENCES public.signature_recipients(id) ON DELETE CASCADE,
field_type text NOT NULL CHECK (field_type IN ('signature', 'date', 'name', 'initials')),
page_number integer NOT NULL DEFAULT 1,
x_ratio numeric NOT NULL, -- 0..1 from left
y_ratio numeric NOT NULL, -- 0..1 from top (UI coord)
width_ratio numeric NOT NULL DEFAULT 0.20,
height_ratio numeric NOT NULL DEFAULT 0.05,
required boolean NOT NULL DEFAULT true,
created_at timestamptz NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_signature_fields_envelope ON public.signature_fields(envelope_id);
CREATE INDEX IF NOT EXISTS idx_signature_fields_recipient ON public.signature_fields(recipient_id);
ALTER TABLE public.signature_fields ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Staff manage signature fields"
ON public.signature_fields
FOR ALL
TO authenticated
USING (public.has_role(auth.uid(), 'admin'::public.app_role) OR public.has_role(auth.uid(), 'manager'::public.app_role))
WITH CHECK (public.has_role(auth.uid(), 'admin'::public.app_role) OR public.has_role(auth.uid(), 'manager'::public.app_role));
CREATE POLICY "Recipients view their fields"
ON public.signature_fields
FOR SELECT
USING (EXISTS (
SELECT 1 FROM public.signature_recipients r
WHERE r.id = signature_fields.recipient_id
AND (r.user_id = auth.uid() OR lower(r.email) = lower(auth.email()))
));