Skip to main content

Feature Tables

Overview

The feature tables manage specialized designer systems within Scoriet: the form designer, report designer, kanban boards, and messaging system. Each feature domain has its own table structure to support complex design and workflow requirements.


Forms Domain

form_sets

Stores collections of related form window definitions.

Purpose

  • Organize related forms into sets
  • Store form styling and color scheme
  • Support form cloning and reuse
  • Manage form visibility and access

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
namestring(100)NO-Form set name
descriptiontextYESNULLForm set description
creator_user_idunsignedBigInteger(FK)NO-FK: users.id (CASCADE) - Creator
visibilityenumNOprivateVisibility (system, private, team, public)
cloned_from_idunsignedBigInteger(FK)YESNULLFK: form_sets.id - Original if cloned
background_colorstring(7)YESNULLDefault background color (hex)
window_colorstring(7)YESNULLDefault window color (hex)
text_colorstring(7)YESNULLDefault text color (hex)
button_colorstring(7)YESNULLDefault button color (hex)
is_activebooleanNOtrueForm set active status
created_attimestampNO-Creation timestamp
updated_attimestampNO-Last update timestamp

Indexes

  • Primary Key: id
  • Foreign Keys: creator_user_id, cloned_from_id

Relationships

  • Belongs To → Users (creator)
  • Has Many → Form Windows
  • Has Many → Project Form Set Associations (through project_form_set)

form_windows

Defines form windows (screens) within form sets.

Purpose

  • Define different form types (create, edit, list, report)
  • Store window metadata and sizing
  • Manage window layout

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
form_set_idunsignedBigInteger(FK)NO-FK: form_sets.id (CASCADE)
namestring(100)NO-Window internal name
display_namestring(100)NO-User-visible window name
window_typeenumNO-Window type (main_menu, create_edit, data_table, report_single, report_list)
min_widthintegerYESNULLMinimum window width
default_widthintegerYESNULLDefault window width
default_heightintegerYESNULLDefault window height
background_colorstring(7)YESNULLOverride background color
window_colorstring(7)YESNULLOverride window color
text_colorstring(7)YESNULLOverride text color
button_colorstring(7)YESNULLOverride button color
is_activebooleanNOtrueWindow active status
sort_orderintegerNO0Display order
paper_configjsonYESNULLPaper settings for reports (size, orientation, margins)
created_attimestampNO-Creation timestamp
updated_attimestampNO-Last update timestamp

Indexes

  • Primary Key: id
  • Unique: (form_set_id, window_type) - One per window type
  • Foreign Key: form_set_id

Relationships

  • Belongs To → Form Sets
  • Has Many → Form Elements
  • Has Many → Form Item Placements

Window Types

  • main_menu: Application main menu/dashboard
  • create_edit: Create/edit single record form
  • data_table: List/grid view of records
  • report_single: Single-record report
  • report_list: List-style report

form_elements

Defines UI container elements within forms.

Purpose

  • Create form layout structure
  • Define containers, tabs, buttons, etc.
  • Support hierarchical element composition
  • Manage element visibility and positioning

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
form_window_idunsignedBigInteger(FK)NO-FK: form_windows.id (CASCADE)
element_typeenumNO-Element type (container, tab_container, tab_panel, menu_container, buttons, separator, spacer)
x_positionintegerNO-X position on form
y_positionintegerNO-Y position on form
widthintegerNO-Element width
heightintegerNO-Element height
container_orientationenumYESNULLOrientation (horizontal, vertical)
gapintegerYESNULLGap between child elements
columnsintegerYESNULLGrid columns for container
max_fieldsintegerYESNULLMaximum fields in container
button_labelstring(100)YESNULLButton label (for button elements)
button_iconstring(50)YESNULLButton icon (for button elements)
button_actionstring(100)YESNULLButton action/handler
button_colorsjsonYESNULLButton color configuration
tab_labelstring(100)YESNULLTab label (for tabs)
parent_tab_container_idunsignedBigInteger(FK)YESNULLFK: form_elements.id - Parent tab container
custom_stylejsonYESNULLCustom CSS styling (JSON)
sort_orderintegerNO0Display order
is_visiblebooleanNOtrueElement visibility
tab_orderintegerYESNULLTab navigation order
default_control_heightintegerYESNULLDefault child control height
created_attimestampNO-Creation timestamp
updated_attimestampNO-Last update timestamp

Indexes

  • Primary Key: id
  • Foreign Keys: form_window_id, parent_tab_container_id

Relationships

  • Belongs To → Form Windows
  • Has Many → Form Item Placements (contains items)
  • Has Many → Form Elements (parent for tab containers)

form_item_placements

Maps schema fields to specific form locations.

Purpose

  • Place schema fields on form windows
  • Control field visibility and properties per form
  • Configure lookups and validations
  • Store localized field labels

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
form_window_idunsignedBigInteger(FK)NO-FK: form_windows.id (CASCADE)
item_typeenumNO-Item type (field, button, menu_item, print_field)
container_element_idunsignedBigInteger(FK)NO-FK: form_elements.id (CASCADE) - Container
tab_panel_idunsignedBigInteger(FK)YESNULLFK: form_elements.id - Tab panel
x_positionintegerNO-X position within container
y_positionintegerNO-Y position within container
widthintegerNO-Field width
heightintegerNO-Field height
sort_orderintegerNO0Display order
is_visiblebooleanNOtrueField visibility
schema_table_idunsignedBigInteger(FK)YESNULLFK: schema_tables.id - Referenced table
field_idunsignedBigInteger(FK)YESNULLFK: schema_fields.id - Referenced field
caption_overridestring(255)YESNULLCustom label override
control_typestring(50)YESNULLUI control type override
lookup_table_idunsignedBigInteger(FK)YESNULLFK: schema_tables.id - Lookup table
lookup_value_fieldstring(64)YESNULLLookup value field
lookup_display_fieldstring(64)YESNULLLookup display field
lookup_sort_fieldstring(64)YESNULLLookup sort field
form_element_idunsignedBigInteger(FK)YESNULLFK: form_elements.id - Custom element
button_typestring(50)YESNULLButton type (submit, cancel, custom)
button_labelstring(100)YESNULLButton label
button_iconstring(50)YESNULLButton icon
button_actionstring(100)YESNULLButton action
button_colorsjsonYESNULLButton colors (JSON)
localized_labelsjsonYESNULLLabels in multiple languages
label_configjsonYESNULLLabel positioning and styling
style_configjsonYESNULLCustom styling (JSON)
menu_item_labelstring(100)YESNULLMenu item label
menu_item_actionstring(100)YESNULLMenu item action
tab_orderintegerYESNULLTab navigation order
edit_maskstring(50)YESNULLInput mask (e.g., phone, SSN)
target_languagestring(10)YESNULLTarget language override
created_attimestampNO-Creation timestamp
updated_attimestampNO-Last update timestamp

Indexes

  • Primary Key: id
  • Composite: (form_window_id, item_type), (schema_table_id, field_id)
  • Foreign Keys: form_window_id, container_element_id, field_id, schema_table_id

Relationships

  • Belongs To → Form Windows
  • Belongs To → Schema Fields
  • Belongs To → Schema Tables

Reports Domain

report_patterns

Stores report design definitions.

Purpose

  • Define report templates and layouts
  • Store report metadata
  • Support report cloning

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
namestring(100)NO-Report pattern name
descriptiontextYESNULLReport description
creator_user_idunsignedBigInteger(FK)NO-FK: users.id (CASCADE) - Creator
visibilityenumNOprivateVisibility (private, team, public)
cloned_from_idunsignedBigInteger(FK)YESNULLFK: report_patterns.id - Original if cloned
is_activebooleanNOtrueReport active status
created_attimestampNO-Creation timestamp
updated_attimestampNO-Last update timestamp

Indexes

  • Primary Key: id
  • Foreign Keys: creator_user_id, cloned_from_id

Relationships

  • Belongs To → Users (creator)
  • Has Many → Report Pattern Forms

report_pattern_forms

Defines report form configurations (single vs list).

Purpose

  • Configure different report formats
  • Store paper/page settings
  • Manage form type specifics

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
report_pattern_idunsignedBigInteger(FK)NO-FK: report_patterns.id (CASCADE)
form_typeenumNO-Report type (report_single, report_list)
paper_sizestring(20)YESA4Paper size (A4, Letter, Legal, etc.)
orientationstring(20)YESportraitOrientation (portrait, landscape)
unitstring(2)YESmmUnit (mm, cm, in)
widthdecimal(10,2)YESNULLPage width
heightdecimal(10,2)YESNULLPage height
marginsjsonYESNULLPage margins (top, right, bottom, left)
row_heightintegerYESNULLRow height in list reports
max_columnsintegerYESNULLMaximum columns in report
header_heightintegerYESNULLHeader section height
footer_heightintegerYESNULLFooter section height
list_style_configjsonYESNULLList report styling (JSON)
table_header_configjsonYESNULLTable header configuration (JSON)
created_attimestampNO-Creation timestamp
updated_attimestampNO-Last update timestamp

Indexes

  • Primary Key: id
  • Unique: (report_pattern_id, form_type) - One per type
  • Foreign Key: report_pattern_id

Relationships

  • Belongs To → Report Patterns
  • Has Many → Report Pattern Elements
  • Has Many → Report Layout Elements

report_pattern_elements

Defines report layout sections (header, detail, footer).

Purpose

  • Define report structure
  • Create section containers
  • Manage section sizing and styling

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
report_pattern_form_idunsignedBigInteger(FK)NO-FK: report_pattern_forms.id (CASCADE)
element_typeenumNO-Section type (container, header_section, detail_section, footer_section)
x_positionintegerNO-X position on page
y_positionintegerNO-Y position on page
widthintegerNO-Section width
heightintegerNO-Section height
container_columnsintegerYESNULLGrid columns
max_fieldsintegerYESNULLMaximum fields
labelstring(100)YESNULLSection label
report_controlsjsonYESNULLReport controls configuration (JSON)
content_labelsjsonYESNULLContent labels (JSON)
sort_orderintegerNO0Display order
is_visiblebooleanNOtrueSection visibility
font_familystring(50)YESNULLDefault font family
font_sizeintegerYESNULLDefault font size
font_weightstring(20)YESNULLFont weight (bold, normal)
font_stylestring(20)YESNULLFont style (italic, normal)
text_decorationstring(50)YESNULLText decoration
text_alignstring(20)YESNULLText alignment (left, center, right)
text_colorstring(7)YESNULLText color (hex)
border_widthintegerYESNULLBorder width
border_colorstring(7)YESNULLBorder color (hex)
background_colorstring(7)YESNULLBackground color (hex)
created_attimestampNO-Creation timestamp
updated_attimestampNO-Last update timestamp

Indexes

  • Primary Key: id
  • Foreign Key: report_pattern_form_id

Relationships

  • Belongs To → Report Pattern Forms
  • Has Many → Report Layout Elements

report_layout_elements

Defines individual report content elements (fields, text, images).

Purpose

  • Place content in report sections
  • Configure field display and formatting
  • Store labels and styling

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
report_pattern_form_idunsignedBigInteger(FK)NO-FK: report_pattern_forms.id (CASCADE)
container_element_idunsignedBigInteger(FK)YESNULLFK: report_pattern_elements.id - Container
element_typeenumNO-Element type (field, static_text, heading, lines, box, page_number, page_date, page_total, image_placeholder)
schema_table_idunsignedBigInteger(FK)YESNULLFK: schema_tables.id - Referenced table
field_idunsignedBigInteger(FK)YESNULLFK: schema_fields.id - Referenced field
x_positionintegerNO-X position in container
y_positionintegerNO-Y position in container
widthintegerNO-Element width
heightintegerNO-Element height
contenttextYESNULLStatic content (for text elements)
font_familystring(50)YESNULLFont family
font_sizeintegerYESNULLFont size
font_weightstring(20)YESNULLFont weight
font_stylestring(20)YESNULLFont style
text_decorationstring(50)YESNULLText decoration
text_alignstring(20)YESNULLText alignment
text_colorstring(7)YESNULLText color (hex)
border_widthintegerYESNULLBorder width
border_colorstring(7)YESNULLBorder color (hex)
background_colorstring(7)YESNULLBackground color (hex)
caption_overridestring(255)YESNULLLabel override
caption_labelsjsonYESNULLLabels in multiple languages
labelstring(100)YESNULLField label
label_positionstring(20)YESNULLLabel position (top, left, right)
label_offsetintegerYESNULLLabel offset from element
sort_orderintegerNO0Display order
is_visiblebooleanNOtrueElement visibility
created_attimestampNO-Creation timestamp
updated_attimestampNO-Last update timestamp

Indexes

  • Primary Key: id
  • Foreign Keys: report_pattern_form_id, field_id, schema_table_id

Relationships

  • Belongs To → Report Pattern Forms
  • Belongs To → Schema Fields
  • Belongs To → Schema Tables

report_images

Stores images embedded in reports.

Purpose

  • Store report images (logos, watermarks, backgrounds)
  • Support multiple languages for images

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
report_pattern_idunsignedBigInteger(FK)NO-FK: report_patterns.id (CASCADE)
namestring(100)NO-Image name/identifier
languagestring(10)YESNULLLanguage code for localized images
mime_typestring(100)NO-Image MIME type (image/png, image/jpeg)
filenamestring(255)NO-Stored filename
file_sizeintegerNO-File size in bytes
widthintegerYESNULLImage width in pixels
heightintegerYESNULLImage height in pixels
image_databinaryNO-Binary image data
created_attimestampNO-Creation timestamp
updated_attimestampNO-Last update timestamp

Indexes

  • Primary Key: id
  • Composite: (report_pattern_id, language), (report_pattern_id, name)
  • Foreign Key: report_pattern_id

Relationships

  • Belongs To → Report Patterns

Kanban Domain

kanban_boards

Stores kanban board definitions per project.

Purpose

  • Define project kanban board
  • Store board metadata and settings
  • Manage board active status

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
project_idunsignedBigInteger(unique FK)NO-FK: projects.id (CASCADE) - One board per project
namestring(100)NOProject BoardBoard name
descriptiontextYESNULLBoard description
is_activebooleanNOtrueBoard active status
created_attimestampNO-Creation timestamp
updated_attimestampNO-Last update timestamp

Indexes

  • Primary Key: id
  • Unique: project_id - One board per project
  • Foreign Key: project_id

Relationships

  • Belongs To → Projects
  • Has Many → Kanban Columns
  • Has Many → Kanban Labels

kanban_columns

Defines columns/swimlanes on kanban boards.

Purpose

  • Define board workflow stages/columns
  • Store column configuration
  • Manage WIP limits

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
board_idunsignedBigInteger(FK)NO-FK: kanban_boards.id (CASCADE)
namestring(100)NO-Column name (To Do, In Progress, Done, etc.)
colorstring(7)NO#3b82f6Column color (hex)
positionintegerNO-Column display order
wip_limitintegerYESNULLWork in progress limit (optional)
is_done_columnbooleanNOfalseWhether this marks completion
created_attimestampNO-Creation timestamp
updated_attimestampNO-Last update timestamp

Indexes

  • Primary Key: id
  • Foreign Key: board_id
  • Composite: (board_id, position)

Relationships

  • Belongs To → Kanban Boards
  • Has Many → Kanban Cards

kanban_cards

Stores individual kanban cards (tasks/issues).

Purpose

  • Store card/task information
  • Track card status and metadata
  • Manage card lifecycle

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
column_idunsignedBigInteger(FK)NO-FK: kanban_columns.id (CASCADE)
created_byunsignedBigInteger(FK)NO-FK: users.id - Card creator
assigned_tounsignedBigInteger(FK)YESNULLFK: users.id - Assignee
titlestring(255)NO-Card title
descriptiontextYESNULLCard description
colorstring(7)YESNULLCard color (hex)
positionintegerNO-Position in column
priorityenumNOmediumPriority (low, medium, high, urgent)
due_datedateYESNULLDue date
estimated_hoursdecimal(5,1)YESNULLEstimated time
actual_hoursdecimal(5,1)YESNULLActual time spent
completed_attimestampYESNULLCompletion timestamp
created_attimestampNO-Creation timestamp
updated_attimestampNO-Last update timestamp

Indexes

  • Primary Key: id
  • Composite: (column_id, position), (assigned_to, created_at), (created_by, created_at)
  • Foreign Keys: column_id, created_by, assigned_to

Relationships

  • Belongs To → Kanban Columns
  • Belongs To → Users (creator)
  • Belongs To → Users (assignee)
  • Has Many → Kanban Card Comments
  • Has Many → Kanban Card Activities
  • Has Many → Kanban Card Assignees
  • Has Many → Kanban Card Labels (through kanban_card_label)

kanban_card_activities

Logs all changes to kanban cards.

Purpose

  • Track card activity history
  • Monitor status changes
  • Provide audit trail

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
card_idunsignedBigInteger(FK)NO-FK: kanban_cards.id (CASCADE)
user_idunsignedBigInteger(FK)NO-FK: users.id - Who made the change
actionstring(50)NO-Action type (created, moved, assigned, commented, etc.)
old_valuejsonYESNULLPrevious value (JSON)
new_valuejsonYESNULLNew value (JSON)
created_attimestampNO-Activity timestamp

Indexes

  • Primary Key: id
  • Composite: (card_id, created_at), (user_id, created_at)
  • Foreign Keys: card_id, user_id

Relationships

  • Belongs To → Kanban Cards
  • Belongs To → Users

kanban_card_assignees

Manages multiple assignees per card.

Purpose

  • Support multiple assignees per card
  • Track assignment history
  • Record who assigned

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
card_idunsignedBigInteger(FK)NO-FK: kanban_cards.id (CASCADE)
user_idunsignedBigInteger(FK)NO-FK: users.id - Assigned user
assigned_byunsignedBigInteger(FK)NO-FK: users.id - Who assigned
assigned_attimestampNOCURRENTAssignment timestamp

Indexes

  • Primary Key: id
  • Unique: (card_id, user_id) - One assignment per user per card
  • Foreign Keys: card_id, user_id, assigned_by

Relationships

  • Belongs To → Kanban Cards
  • Belongs To → Users (assignee)
  • Belongs To → Users (assigner)

kanban_card_comments

Stores comments on kanban cards.

Purpose

  • Allow team discussion on cards
  • Track comment history

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
card_idunsignedBigInteger(FK)NO-FK: kanban_cards.id (CASCADE)
user_idunsignedBigInteger(FK)NO-FK: users.id - Comment author
contenttextNO-Comment content
created_attimestampNO-Creation timestamp
updated_attimestampNO-Last update timestamp

Indexes

  • Primary Key: id
  • Composite: (card_id, created_at), (user_id, created_at)
  • Foreign Keys: card_id, user_id

Relationships

  • Belongs To → Kanban Cards
  • Belongs To → Users

kanban_labels

Defines labels/tags for cards.

Purpose

  • Create reusable card labels
  • Categorize cards
  • Color-code work items

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
board_idunsignedBigInteger(FK)NO-FK: kanban_boards.id (CASCADE)
namestring(50)NO-Label name (bug, feature, docs, etc.)
colorstring(7)NO-Label color (hex)
created_attimestampNO-Creation timestamp

Indexes

  • Primary Key: id
  • Foreign Key: board_id

Relationships

  • Belongs To → Kanban Boards
  • Has Many → Kanban Card Labels (through kanban_card_label)

kanban_card_label

Associative table for card-label relationships.

Purpose

  • Many-to-many relationship between cards and labels

Fields

FieldTypeNullDefaultDescription
card_idunsignedBigInteger(FK)NO-FK: kanban_cards.id (CASCADE)
label_idunsignedBigInteger(FK)NO-FK: kanban_labels.id (CASCADE)

Indexes

  • Composite Primary Key: (card_id, label_id)
  • Foreign Keys: card_id, label_id

Relationships

  • Belongs To → Kanban Cards
  • Belongs To → Kanban Labels

Messaging Domain

message_threads

Stores message conversation threads.

Purpose

  • Create message conversations
  • Support broadcast messages

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
subjectstring(255)NO-Thread subject
is_broadcastbooleanNOfalseBroadcast message flag
created_attimestampNO-Creation timestamp

Indexes

  • Primary Key: id

Relationships

  • Has Many → Messages
  • Has Many → Message Thread Participants

messages

Stores individual messages in threads.

Purpose

  • Store message content
  • Track message history
  • Support threaded conversations

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
thread_idunsignedBigInteger(FK)NO-FK: message_threads.id (CASCADE)
sender_idunsignedBigInteger(FK)NO-FK: users.id - Message author
bodytextNO-Message content
created_attimestampNO-Creation timestamp

Indexes

  • Primary Key: id
  • Composite: (thread_id, created_at), (sender_id, created_at)
  • Foreign Keys: thread_id, sender_id

Relationships

  • Belongs To → Message Threads
  • Belongs To → Users
  • Has Many → Message Attachments

message_thread_participants

Tracks message thread participants and read status.

Purpose

  • Manage thread membership
  • Track read/unread status
  • Support soft delete of threads for users

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
thread_idunsignedBigInteger(FK)NO-FK: message_threads.id (CASCADE)
user_idunsignedBigInteger(FK)NO-FK: users.id - Participant
last_read_attimestampYESNULLLast message read timestamp
deleted_attimestampYESNULLWhen user deleted thread (soft delete)
created_attimestampNO-Creation timestamp

Indexes

  • Primary Key: id
  • Unique: (thread_id, user_id) - One per participant
  • Composite: (user_id, last_read_at), (thread_id, deleted_at)
  • Foreign Keys: thread_id, user_id

Relationships

  • Belongs To → Message Threads
  • Belongs To → Users

message_attachments

Stores file attachments in messages.

Purpose

  • Support file sharing in messages
  • Track attachment metadata

Fields

FieldTypeNullDefaultDescription
idbigIncrementsNOAutoPrimary key
message_idunsignedBigInteger(FK)NO-FK: messages.id (CASCADE)
filenamestring(255)NO-Stored filename
original_filenamestring(255)NO-Original filename
mime_typestring(100)YESNULLFile MIME type
sizeintegerNO-File size in bytes
pathstring(500)NO-Storage path
created_attimestampNO-Creation timestamp

Indexes

  • Primary Key: id
  • Foreign Key: message_id

Relationships

  • Belongs To → Messages

  • See Core Tables for user information
  • See Schema Tables for field references in forms/reports
  • See Project Tables for form/report associations