-- Phase 3: Admin panel – groups, settings, user display names -- ── Users: display name ─────────────────────────────────────────────────────── ALTER TABLE users ADD COLUMN IF NOT EXISTS display_name TEXT NOT NULL DEFAULT ''; -- ── Groups ─────────────────────────────────────────────────────────────────── CREATE TABLE groups ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), name TEXT NOT NULL UNIQUE, description TEXT NOT NULL DEFAULT '', created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE TABLE group_members ( group_id UUID NOT NULL REFERENCES groups(id) ON DELETE CASCADE, user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, joined_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), PRIMARY KEY (group_id, user_id) ); CREATE INDEX idx_group_members_user ON group_members(user_id); -- ── Settings (key-value, admin-managed) ─────────────────────────────────────── CREATE TABLE settings ( key TEXT PRIMARY KEY, value TEXT NOT NULL DEFAULT '', updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); -- Default settings INSERT INTO settings (key, value) VALUES ('cloud_name', 'Aether'), ('primary_color', '#6366f1'), ('accent_color', '#8b5cf6'), ('logo_storage_key', '');