PostgreSQL database with multi-tenant RLS. 429 tables across 12 categories.
Solid# uses PostgreSQL 15 with SQLAlchemy 2.0 ORM. All tables enforce Row-Level Security (RLS) for multi-tenant data isolation. Vector embeddings use pgvector extension.
Every table includes a company_id column. Row-Level Security policies are enforced at the PostgreSQL level, not just application code.
Company A cannot access Company B's data. This is enforced by database policies, not application logic. Even direct SQL queries are filtered.
-- Every query is automatically filtered
CREATE POLICY company_isolation ON contacts
USING (company_id = current_setting('app.company_id')::int);
-- Application sets context before queries
SET app.company_id = 42;
SELECT * FROM contacts; -- Only returns company 42's contacts| Category | Tables | Description |
|---|---|---|
| 68 | Agents, chat sessions, messages, KB entries, embeddings | |
| 55 | Contacts, leads, deals, activities, pipelines | |
| 48 | Companies, users, settings, roles, configuration | |
| 44 | Products, variants, stock, orders, fulfillment | |
| 40 | Transactions, invoices, subscriptions, payouts | |
| 38 | Audit logs, jobs, queues, feature flags, monitoring | |
| 36 | Campaigns, emails, sequences, social posts | |
| 32 | OAuth tokens, sync state, mappings, webhooks | |
| 22 | Pages, blocks, media, sites, blogs | |
| 18 | Events, metrics, reports, dashboards | |
| 16 | Patients, appointments, HIPAA audit logs | |
| 12 | Appointments, availability, calendar sync |
Showing 18 sample tables
| Table | Columns | RLS |
|---|---|---|
companies | 45 | Yes |
users | 32 | Yes |
company_settings | 67 | Yes |
contacts | 48 | Yes |
leads | 35 | Yes |
deals | 42 | Yes |
activities | 24 | Yes |
transactions | 52 | Yes |
invoices | 38 | Yes |
subscriptions | 28 | Yes |
chat_sessions | 35 | Yes |
chat_messages | 28 | Yes |
kb_entries | 42 | Yes |
kb_embeddings | 8 | Yes |
products | 38 | Yes |
inventory | 22 | Yes |
campaigns | 45 | Yes |
email_sends | 28 | Yes |