Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.encoreos.io/llms.txt

Use this file to discover all available pages before exploring further.

Module: Platform Foundation
Prefix: pf_
Table Count: 72
Last Updated: 2026-01-10

Overview

Platform Foundation provides the core infrastructure for multi-tenancy, authentication, authorization, notifications, documents, and shared services across all modules.

Table Categories

1. Core Multi-Tenancy (4 tables)

TableColumnsDescription
pf_organizations15Root tenant entity - all business data scoped here
pf_sites18Physical locations within an organization
pf_profiles22User profiles linked to auth.users
pf_departments12Organizational departments
Key Relationships:
pf_organizations (1) ──< (many) pf_sites
pf_organizations (1) ──< (many) pf_departments
pf_profiles (many) >── (1) pf_organizations

2. Authorization & Roles (7 tables)

TableColumnsDescription
pf_user_roles10DEPRECATED - V1 table, read-only (retained for audit)
pf_user_role_assignments8User-to-role mappings (V2 - active)
pf_role_permissions7Permissions assigned to roles
pf_custom_roles12Organization-defined custom roles
pf_module_permissions8Available permissions per module
pf_permission_sets10Grouped permission collections
pf_permission_set_items5Items within permission sets
Usage Pattern:
// Check permission
const hasPermission = await supabase.rpc('pf_user_has_permission', {
  p_user_id: userId,
  p_permission_key: 'hr.employees.view'
});

3. Notifications (6 tables)

TableColumnsDescription
pf_notifications16Individual notification records
pf_notification_templates14Reusable notification templates
pf_notification_preferences12User notification settings
pf_notification_batches10Batch notification sends
pf_notification_delivery_log11Delivery tracking
pf_push_subscriptions9Web push subscriptions
Key Fields:
  • notification_type: ‘email’, ‘in_app’, ‘push’, ‘sms’
  • priority: ‘low’, ‘normal’, ‘high’, ‘urgent’
  • status: ‘pending’, ‘sent’, ‘delivered’, ‘failed’

4. Documents & Signatures (6 tables)

TableColumnsDescription
pf_documents22Document metadata and storage refs
pf_document_versions14Version history
pf_document_approvals12Approval workflows
pf_document_permissions8Access control
pf_signatures15Digital signature records
pf_signature_requests14Signature request tracking
Storage Integration:
// Documents stored in Supabase Storage
const bucket = 'pf-documents';
const path = `${organizationId}/${documentId}/${version}`;

5. AI Integration (3 tables)

TableColumnsDescription
pf_ai_conversations14AI chat sessions
pf_ai_usage_logs12Token/cost tracking
pf_ai_prompt_feedback10User feedback on AI responses
Usage Tracking:
  • Tracks tokens used per conversation
  • Cost allocation by organization
  • Model performance metrics

6. Wizards & Guided Workflows (5 tables)

TableColumnsDescription
pf_wizard_templates18Wizard definitions
pf_wizard_template_versions12Version history
pf_wizard_executions16Active wizard instances
pf_wizard_analytics_events11Usage analytics
pf_wizard_marketplace_listings14Shared wizard marketplace

7. Dashboards (4 tables)

TableColumnsDescription
pf_dashboard_templates16Dashboard definitions
pf_dashboard_shares8Sharing configurations
pf_org_dashboard_defaults7Org-level defaults
pf_user_dashboard_preferences10User customizations

8. Reports (6 tables)

TableColumnsDescription
pf_reports18Report definitions
pf_report_schedules14Scheduled report runs
pf_report_runs12Execution history
pf_report_executions11Detailed execution logs
pf_report_permissions7Access control
pf_report_recipients8Distribution lists

9. Custom Objects (8 tables)

TableColumnsDescription
pf_custom_objects16Custom entity definitions
pf_custom_object_fields18Field definitions
pf_custom_object_records12Record data storage
pf_object_relationships10Relationship definitions
pf_object_layouts12UI layout configurations
pf_object_validations10Validation rules
pf_object_triggers12Automation triggers
pf_object_permissions8Object-level security

10. Field Configuration (6 tables)

TableColumnsDescription
pf_entity_field_configs14Field metadata per entity
pf_field_permissions8Field-level security
pf_field_interaction_stats10Usage analytics
pf_page_layouts12Page layout definitions
pf_page_layout_sections10Layout sections
pf_page_layout_fields9Fields within sections

11. Picklists (2 tables)

TableColumnsDescription
pf_picklists12Picklist definitions
pf_picklist_items10Picklist values
Usage:
// Fetch picklist items
const { data } = await supabase
  .from('pf_picklist_items')
  .select('*')
  .eq('picklist_id', picklistId)
  .eq('is_active', true)
  .order('display_order');

12. Integrations (6 tables)

TableColumnsDescription
pf_integrations16Integration configurations
pf_integration_credentials12Encrypted credentials
pf_outbound_webhooks14Webhook configurations
pf_webhook_deliveries12Delivery logs
pf_oauth_providers14OAuth provider configs
pf_oauth_tokens12Token storage

13. Settings & Audit (5 tables)

TableColumnsDescription
pf_module_settings25Platform module settings
pf_settings_audit10Settings change history
pf_audit_logs18System-wide audit trail
pf_health_checks12System health monitoring
pf_health_incidents14Incident tracking

14. Tasks & Invitations (3 tables)

TableColumnsDescription
pf_tasks18Task assignments
pf_task_comments10Task discussions
pf_user_invitations14User invitation tracking

Common Query Patterns

Get User’s Organizations

const { data } = await supabase
  .from('pf_profiles')
  .select(`
    *,
    organization:pf_organizations(*)
  `)
  .eq('user_id', userId);

Check User Permissions

const { data } = await supabase.rpc('pf_get_user_permissions', {
  p_user_id: userId,
  p_organization_id: orgId
});

Get Active Notifications

const { data } = await supabase
  .from('pf_notifications')
  .select('*')
  .eq('user_id', userId)
  .eq('is_read', false)
  .order('created_at', { ascending: false });

RLS Policies

All PF tables have RLS enabled with policies based on:
  • organization_id for tenant isolation
  • user_id for personal data
  • Role-based access via pf_user_has_org_access() helper function

Module Settings

pf_module_settings contains 25 columns for platform configuration:
SettingTypeDefaultDescription
default_localetext’en-US’Default language
default_timezonetext’America/New_York’Default timezone
session_timeout_minutesinteger60Session expiration
mfa_requiredbooleanfalseRequire 2FA
password_min_lengthinteger8Minimum password length
audit_retention_daysinteger365Audit log retention

See Also