mirror of
https://github.com/renee-png/acmcc.git
synced 2026-06-21 09:50:01 +00:00
Add ACMCC app source, Supabase backend, and project config
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
|
||||
-- Email Senders (SMTP sender identities)
|
||||
CREATE TABLE public.email_senders (
|
||||
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
|
||||
user_id UUID NOT NULL,
|
||||
sender_name TEXT NOT NULL,
|
||||
email_address TEXT NOT NULL,
|
||||
smtp_host TEXT,
|
||||
smtp_port INTEGER DEFAULT 587,
|
||||
smtp_username TEXT,
|
||||
smtp_password TEXT,
|
||||
use_tls BOOLEAN DEFAULT true,
|
||||
use_ssl BOOLEAN DEFAULT false,
|
||||
is_active BOOLEAN DEFAULT true,
|
||||
verified BOOLEAN DEFAULT false,
|
||||
is_default BOOLEAN DEFAULT false,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
ALTER TABLE public.email_senders ENABLE ROW LEVEL SECURITY;
|
||||
CREATE POLICY "Users manage own senders" ON public.email_senders FOR ALL TO authenticated USING (user_id = auth.uid()) WITH CHECK (user_id = auth.uid());
|
||||
|
||||
-- Email History
|
||||
CREATE TABLE public.email_history (
|
||||
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
|
||||
user_id UUID NOT NULL,
|
||||
sender_email TEXT,
|
||||
recipient_email TEXT,
|
||||
subject TEXT,
|
||||
body_text TEXT,
|
||||
sent_at TIMESTAMPTZ DEFAULT now(),
|
||||
status TEXT DEFAULT 'sent',
|
||||
feature_type TEXT,
|
||||
email_headers JSONB,
|
||||
proof_url TEXT,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
ALTER TABLE public.email_history ENABLE ROW LEVEL SECURITY;
|
||||
CREATE POLICY "Users view own email history" ON public.email_history FOR ALL TO authenticated USING (user_id = auth.uid()) WITH CHECK (user_id = auth.uid());
|
||||
|
||||
-- Email Routing Rules (inbound email addresses per association)
|
||||
CREATE TABLE public.email_routing_rules (
|
||||
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
|
||||
association_id UUID NOT NULL REFERENCES public.associations(id) ON DELETE CASCADE,
|
||||
email_address TEXT NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
created_by UUID
|
||||
);
|
||||
ALTER TABLE public.email_routing_rules ENABLE ROW LEVEL SECURITY;
|
||||
CREATE POLICY "Authenticated users manage routing" ON public.email_routing_rules FOR ALL TO authenticated USING (true) WITH CHECK (true);
|
||||
|
||||
-- Email Templates (reusable template library)
|
||||
CREATE TABLE public.email_templates (
|
||||
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
description TEXT,
|
||||
subject TEXT,
|
||||
body_html TEXT,
|
||||
thumbnail_url TEXT,
|
||||
created_by UUID,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
ALTER TABLE public.email_templates ENABLE ROW LEVEL SECURITY;
|
||||
CREATE POLICY "Authenticated users manage templates" ON public.email_templates FOR ALL TO authenticated USING (true) WITH CHECK (true);
|
||||
|
||||
-- Notify Board Templates
|
||||
CREATE TABLE public.notify_board_templates (
|
||||
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
subject TEXT,
|
||||
body TEXT,
|
||||
attachments JSONB,
|
||||
created_by UUID,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
ALTER TABLE public.notify_board_templates ENABLE ROW LEVEL SECURITY;
|
||||
CREATE POLICY "Authenticated users manage board templates" ON public.notify_board_templates FOR ALL TO authenticated USING (true) WITH CHECK (true);
|
||||
|
||||
-- Owner Notification Templates
|
||||
CREATE TABLE public.owner_notification_templates (
|
||||
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
subject TEXT,
|
||||
body TEXT,
|
||||
created_by UUID,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
ALTER TABLE public.owner_notification_templates ENABLE ROW LEVEL SECURITY;
|
||||
CREATE POLICY "Authenticated users manage notification templates" ON public.owner_notification_templates FOR ALL TO authenticated USING (true) WITH CHECK (true);
|
||||
|
||||
-- Owner Notification Proofs
|
||||
CREATE TABLE public.owner_notification_proofs (
|
||||
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
|
||||
client_id UUID,
|
||||
association_id UUID REFERENCES public.associations(id) ON DELETE SET NULL,
|
||||
subject TEXT,
|
||||
body TEXT,
|
||||
owners_notified JSONB,
|
||||
attachments JSONB,
|
||||
delivery_status TEXT,
|
||||
validation_id TEXT DEFAULT gen_random_uuid()::TEXT,
|
||||
proof_url TEXT,
|
||||
created_by UUID,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
ALTER TABLE public.owner_notification_proofs ENABLE ROW LEVEL SECURITY;
|
||||
CREATE POLICY "Authenticated users manage proofs" ON public.owner_notification_proofs FOR ALL TO authenticated USING (true) WITH CHECK (true);
|
||||
|
||||
-- Email Server Settings (per association SMTP/IMAP config)
|
||||
CREATE TABLE public.email_server_settings (
|
||||
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
|
||||
association_id UUID NOT NULL REFERENCES public.associations(id) ON DELETE CASCADE,
|
||||
smtp_host TEXT,
|
||||
smtp_port INTEGER,
|
||||
smtp_username TEXT,
|
||||
smtp_password TEXT,
|
||||
imap_host TEXT,
|
||||
imap_port INTEGER,
|
||||
pop3_host TEXT,
|
||||
pop3_port INTEGER,
|
||||
is_configured BOOLEAN DEFAULT false,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
UNIQUE(association_id)
|
||||
);
|
||||
ALTER TABLE public.email_server_settings ENABLE ROW LEVEL SECURITY;
|
||||
CREATE POLICY "Authenticated users manage server settings" ON public.email_server_settings FOR ALL TO authenticated USING (true) WITH CHECK (true);
|
||||
Reference in New Issue
Block a user