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,49 @@
CREATE TABLE public.committees (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
association_id UUID NOT NULL REFERENCES public.associations(id) ON DELETE CASCADE,
name TEXT NOT NULL,
description TEXT,
is_active BOOLEAN NOT NULL DEFAULT true,
created_by UUID REFERENCES auth.users(id),
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX idx_committees_assoc ON public.committees(association_id);
ALTER TABLE public.committees ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Members view committees"
ON public.committees FOR SELECT
USING (public.user_belongs_to_association(auth.uid(), association_id));
CREATE POLICY "Admins manage committees - insert"
ON public.committees FOR INSERT
WITH CHECK (public.has_role(auth.uid(), 'admin'::public.app_role) OR public.has_role(auth.uid(), 'manager'::public.app_role));
CREATE POLICY "Admins manage committees - update"
ON public.committees FOR UPDATE
USING (public.has_role(auth.uid(), 'admin'::public.app_role) OR public.has_role(auth.uid(), 'manager'::public.app_role));
CREATE POLICY "Admins manage committees - delete"
ON public.committees FOR DELETE
USING (public.has_role(auth.uid(), 'admin'::public.app_role) OR public.has_role(auth.uid(), 'manager'::public.app_role));
CREATE TRIGGER update_committees_updated_at
BEFORE UPDATE ON public.committees
FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column();
ALTER TABLE public.arc_committee_members ADD COLUMN committee_id UUID REFERENCES public.committees(id) ON DELETE CASCADE;
ALTER TABLE public.arc_committee_members ADD COLUMN role TEXT;
CREATE INDEX idx_arc_committee_members_committee ON public.arc_committee_members(committee_id);
-- Backfill: create a default ARC committee per association that has existing members
INSERT INTO public.committees (association_id, name, description)
SELECT DISTINCT association_id, 'Architectural Review Committee', 'Default ARC committee'
FROM public.arc_committee_members
WHERE association_id IS NOT NULL
ON CONFLICT DO NOTHING;
UPDATE public.arc_committee_members m
SET committee_id = c.id
FROM public.committees c
WHERE m.committee_id IS NULL
AND c.association_id = m.association_id
AND c.name = 'Architectural Review Committee';