Spaces:
Sleeping
Sleeping
| -- SUPABASE SQL BLUEPRINT SETUP FOR PERSONAL DEVELOPER DASHBOARD | |
| -- copy and paste this complete schema directly into your Supabase SQL Editor on your mobile phone! | |
| -- ------------------------------------------------------------- | |
| -- 1. Create table for Developer Projects (Project Vault) | |
| -- ------------------------------------------------------------- | |
| CREATE TABLE IF NOT EXISTS public.developer_projects ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| project_name TEXT NOT NULL, | |
| platform_used TEXT NOT NULL, | |
| associated_email TEXT NOT NULL, | |
| project_url TEXT, | |
| created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL | |
| ); | |
| -- Enable RLS (Row Level Security) for compliance | |
| ALTER TABLE public.developer_projects ENABLE ROW LEVEL SECURITY; | |
| -- Create dynamic public allow-all policies for starting developer ease | |
| CREATE POLICY "Allow anonymous read check" | |
| ON public.developer_projects FOR SELECT USING (true); | |
| CREATE POLICY "Allow anonymous insert check" | |
| ON public.developer_projects FOR INSERT WITH CHECK (true); | |
| CREATE POLICY "Allow anonymous delete check" | |
| ON public.developer_projects FOR DELETE USING (true); | |
| -- ------------------------------------------------------------- | |
| -- 2. Create table for Developer Credentials (Secrets Keyring) | |
| -- ------------------------------------------------------------- | |
| CREATE TABLE IF NOT EXISTS public.developer_credentials ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| service_name TEXT NOT NULL, | |
| ip_address TEXT DEFAULT '127.0.0.1' NOT NULL, | |
| api_token TEXT, -- AES encrypted token | |
| secret_key TEXT, -- AES encrypted secret | |
| service_url TEXT, | |
| created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL | |
| ); | |
| -- Enable RLS | |
| ALTER TABLE public.developer_credentials ENABLE ROW LEVEL SECURITY; | |
| -- Create policies | |
| CREATE POLICY "Allow anonymous read credentials" | |
| ON public.developer_credentials FOR SELECT USING (true); | |
| CREATE POLICY "Allow anonymous insert credentials" | |
| ON public.developer_credentials FOR INSERT WITH CHECK (true); | |
| CREATE POLICY "Allow anonymous delete credentials" | |
| ON public.developer_credentials FOR DELETE USING (true); | |
| -- ------------------------------------------------------------- | |
| -- 3. Create table for Smart Prompt History (Token Optimization Logs) | |
| -- ------------------------------------------------------------- | |
| CREATE TABLE IF NOT EXISTS public.prompt_history ( | |
| id TEXT PRIMARY KEY, -- standard unique format ids | |
| arabic_prompt TEXT NOT NULL, | |
| english_prompt TEXT NOT NULL, | |
| arabic_tokens INTEGER DEFAULT 0 NOT NULL, | |
| english_tokens INTEGER DEFAULT 0 NOT NULL, | |
| tokens_saved INTEGER DEFAULT 0 NOT NULL, | |
| percent_saved INTEGER DEFAULT 0 NOT NULL, | |
| created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL | |
| ); | |
| -- Enable RLS | |
| ALTER TABLE public.prompt_history ENABLE ROW LEVEL SECURITY; | |
| -- Create policies for full cross-device replication | |
| CREATE POLICY "Allow anonymous read prompt logs" | |
| ON public.prompt_history FOR SELECT USING (true); | |
| CREATE POLICY "Allow anonymous insert prompt logs" | |
| ON public.prompt_history FOR INSERT WITH CHECK (true); | |
| CREATE POLICY "Allow anonymous delete prompt logs" | |
| ON public.prompt_history FOR DELETE USING (true); | |
| -- ------------------------------------------------------------- | |
| -- 4. Create table for Vault Credentials (Secrets Vault v2) | |
| -- ------------------------------------------------------------- | |
| CREATE TABLE IF NOT EXISTS public.vault_credentials ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| platform TEXT NOT NULL, -- e.g. 'OpenAI', 'Anthropic', 'Google', 'n8n', 'Base44', 'Kimi' | |
| key_type TEXT NOT NULL DEFAULT 'API_KEY', -- e.g. 'API_KEY', 'SECRET', 'WEBHOOK_URL', 'IP_ADDRESS' | |
| encrypted_value TEXT NOT NULL, -- to store the actual secret securely | |
| status TEXT DEFAULT 'active' NOT NULL, -- 'active', 'low_balance', 'expired' | |
| balance NUMERIC(10,2) DEFAULT 100.00 NOT NULL, | |
| auto_recharge_threshold NUMERIC(10,2) DEFAULT 10.00 NOT NULL, | |
| last_used_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, | |
| created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL | |
| ); | |
| ALTER TABLE public.vault_credentials ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Allow select on vault" ON public.vault_credentials FOR SELECT USING (true); | |
| CREATE POLICY "Allow insert on vault" ON public.vault_credentials FOR INSERT WITH CHECK (true); | |
| CREATE POLICY "Allow update on vault" ON public.vault_credentials FOR UPDATE USING (true); | |
| CREATE POLICY "Allow delete on vault" ON public.vault_credentials FOR DELETE USING (true); | |
| -- ------------------------------------------------------------- | |
| -- 5. Create table for Credentials Usage Logs | |
| -- ------------------------------------------------------------- | |
| CREATE TABLE IF NOT EXISTS public.credential_usage_logs ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| credential_id UUID REFERENCES public.vault_credentials(id) ON DELETE CASCADE, | |
| tokens_used INTEGER DEFAULT 0 NOT NULL, | |
| cost NUMERIC(10,6) DEFAULT 0.000000 NOT NULL, | |
| model TEXT NOT NULL, | |
| timestamp TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL | |
| ); | |
| ALTER TABLE public.credential_usage_logs ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Allow select on logs" ON public.credential_usage_logs FOR SELECT USING (true); | |
| CREATE POLICY "Allow insert on logs" ON public.credential_usage_logs FOR INSERT WITH CHECK (true); | |
| -- ------------------------------------------------------------- | |
| -- 6. Create table for App Notification Alerts | |
| -- ------------------------------------------------------------- | |
| CREATE TABLE IF NOT EXISTS public.app_notifications ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| title_ar TEXT NOT NULL, | |
| title_en TEXT NOT NULL, | |
| message_ar TEXT NOT NULL, | |
| message_en TEXT NOT NULL, | |
| type TEXT DEFAULT 'info' NOT NULL, | |
| is_read BOOLEAN DEFAULT false NOT NULL, | |
| created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL | |
| ); | |
| ALTER TABLE public.app_notifications ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Allow select on notifications" ON public.app_notifications FOR SELECT USING (true); | |
| CREATE POLICY "Allow insert on notifications" ON public.app_notifications FOR INSERT WITH CHECK (true); | |
| CREATE POLICY "Allow update on notifications" ON public.app_notifications FOR UPDATE USING (true); | |
| -- ------------------------------------------------------------- | |
| -- 7. Monthly Expenses Consolidated Analytics View | |
| -- ------------------------------------------------------------- | |
| CREATE OR REPLACE VIEW public.monthly_expenses_view AS | |
| SELECT | |
| TO_CHAR(COALESCE(u.timestamp, NOW()), 'YYYY-MM') AS month, | |
| COALESCE(c.platform, 'Unknown') AS platform, | |
| SUM(u.cost)::NUMERIC(10,2) AS total_cost | |
| FROM public.credential_usage_logs u | |
| LEFT JOIN public.vault_credentials c ON u.credential_id = c.id | |
| GROUP BY month, platform; | |
| -- ------------------------------------------------------------- | |
| -- 8. Smart Multi-Key Management System Table (secret_keys) | |
| -- ------------------------------------------------------------- | |
| CREATE TABLE IF NOT EXISTS public.secret_keys ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| platform TEXT NOT NULL, -- e.g., 'OpenAI', 'Google', 'Anthropic', etc. | |
| key_name TEXT NOT NULL, -- friendly name like 'Gemini-1', 'Space-2' | |
| key_type TEXT NOT NULL, -- API_KEY, SECRET_KEY, WEBHOOK_URL, etc. | |
| encrypted_value TEXT NOT NULL, -- Encrypted value | |
| official_link TEXT, -- Link to claim key | |
| status TEXT DEFAULT 'active' NOT NULL, -- active, low, expired | |
| balance NUMERIC(10,2) DEFAULT 100.00 NOT NULL, | |
| usage_count INTEGER DEFAULT 0 NOT NULL, | |
| last_used_at TIMESTAMP WITH TIME ZONE, | |
| created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL | |
| ); | |
| ALTER TABLE public.secret_keys ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Allow select on secret_keys" ON public.secret_keys FOR SELECT USING (true); | |
| CREATE POLICY "Allow insert on secret_keys" ON public.secret_keys FOR INSERT WITH CHECK (true); | |
| CREATE POLICY "Allow update on secret_keys" ON public.secret_keys FOR UPDATE USING (true); | |
| CREATE POLICY "Allow delete on secret_keys" ON public.secret_keys FOR DELETE USING (true); | |
| -- ------------------------------------------------------------- | |
| -- 9. Real-Time Cloud Databases Registry (databases_registry) | |
| -- ------------------------------------------------------------- | |
| CREATE TABLE IF NOT EXISTS public.databases_registry ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| db_name TEXT NOT NULL, | |
| db_type TEXT NOT NULL, -- PostgreSQL, MongoDB, MySQL, Firebase, Supabase, etc. | |
| connection_string TEXT NOT NULL, -- Encrypted connection string or host url | |
| status TEXT DEFAULT 'online' NOT NULL, -- online, offline | |
| tables_count INTEGER DEFAULT 0 NOT NULL, | |
| storage_used NUMERIC(10,2) DEFAULT 0.00 NOT NULL, -- in MB | |
| last_checked_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| ALTER TABLE public.databases_registry ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Allow select on databases_registry" ON public.databases_registry FOR SELECT USING (true); | |
| CREATE POLICY "Allow insert on databases_registry" ON public.databases_registry FOR INSERT WITH CHECK (true); | |
| CREATE POLICY "Allow update on databases_registry" ON public.databases_registry FOR UPDATE USING (true); | |
| CREATE POLICY "Allow delete on databases_registry" ON public.databases_registry FOR DELETE USING (true); | |
| -- ------------------------------------------------------------- | |
| -- 10. Key Usage Logs Tracking (key_usage_tracking) | |
| -- ------------------------------------------------------------- | |
| CREATE TABLE IF NOT EXISTS public.key_usage_tracking ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| key_id UUID REFERENCES public.secret_keys(id) ON DELETE CASCADE, | |
| used_in_page TEXT NOT NULL, -- e.g., 'Optimizer', 'Automation' | |
| used_in_component TEXT NOT NULL, -- e.g., 'AIAssistantModal' | |
| timestamp TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL | |
| ); | |
| ALTER TABLE public.key_usage_tracking ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Allow select on key_usage_tracking" ON public.key_usage_tracking FOR SELECT USING (true); | |
| CREATE POLICY "Allow insert on key_usage_tracking" ON public.key_usage_tracking FOR INSERT WITH CHECK (true); | |