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,57 @@
-- Create autopay enrollments table
CREATE TABLE public.autopay_enrollments (
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
association_id UUID NOT NULL REFERENCES public.associations(id) ON DELETE CASCADE,
owner_id UUID REFERENCES public.owners(id) ON DELETE SET NULL,
unit_id UUID REFERENCES public.units(id) ON DELETE SET NULL,
stripe_customer_id TEXT NOT NULL,
stripe_payment_method_id TEXT NOT NULL,
payment_method_type TEXT NOT NULL DEFAULT 'card',
is_active BOOLEAN NOT NULL DEFAULT true,
enrolled_by UUID,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()
);
-- Enable RLS
ALTER TABLE public.autopay_enrollments ENABLE ROW LEVEL SECURITY;
-- Admin/manager full access
CREATE POLICY "Admins can manage all autopay enrollments"
ON public.autopay_enrollments
FOR ALL
TO authenticated
USING (
public.has_role(auth.uid(), 'admin') OR public.has_role(auth.uid(), 'manager')
)
WITH CHECK (
public.has_role(auth.uid(), 'admin') OR public.has_role(auth.uid(), 'manager')
);
-- Owners can view their own
CREATE POLICY "Users can view own autopay enrollments"
ON public.autopay_enrollments
FOR SELECT
TO authenticated
USING (enrolled_by = auth.uid());
-- Owners can create their own
CREATE POLICY "Users can create own autopay enrollments"
ON public.autopay_enrollments
FOR INSERT
TO authenticated
WITH CHECK (enrolled_by = auth.uid());
-- Owners can update their own
CREATE POLICY "Users can update own autopay enrollments"
ON public.autopay_enrollments
FOR UPDATE
TO authenticated
USING (enrolled_by = auth.uid());
-- Timestamp trigger
CREATE TRIGGER update_autopay_enrollments_updated_at
BEFORE UPDATE ON public.autopay_enrollments
FOR EACH ROW
EXECUTE FUNCTION public.update_updated_at_column();