Skip to main content

Overview

Zarna uses Supabase (managed PostgreSQL) for all persistent data storage with Row Level Security (RLS) for firm-level isolation.

Database Structure

Core Tables

CRM Tables

companies, contacts, deals, interactions, financials, notes

User Management

users, firms, roles, permissions

File Management

files, file_processing_status, extracted_data

Integration Data

email_oauth_tokens, email_config, sync_status

Analytics

reports, queries, usage_metrics

Communication

emails, email_threads, calendar_events

Key Tables

Companies

Contacts

Deals

Files

Row Level Security (RLS)

Firm-Level Isolation

All tables use RLS to ensure users only access their firm’s data:

Policy Types

Relationships

Entity Relationships

Foreign Key Constraints

Triggers

Auto-Update Timestamps

Best Practices

All queries must filter by firm_id for proper isolation
Defense in depth - don’t rely on application logic alone

Next Steps

Database Schema

Complete schema documentation

Supabase Integration

Setup and configuration

Backend Overview

Backend architecture

Data Protection

Security and RLS policies