What is Studio?
Module Studio is dForge’s visual module builder. You design entities, views, menus, roles, and actions in the browser, then publish them as real installed modules — identical to hand-coded ones.
No CLI, no code files, no deployment pipeline. Just design, validate, and publish.
Creating a Project
- Navigate to Studio in the sidebar
- Click + New Project
- Enter:
- Module code — lowercase identifier (e.g.,
tickets,assets) - Display name — human-readable name (e.g., “IT Tickets”, “Asset Management”)
- Description — what this module does
- Module code — lowercase identifier (e.g.,
Designing Entities
Entities are your business objects (tables). Each entity becomes a database table.
Adding an Entity
- Open your project and go to Entities
- Click + New Entity
- Define:
- Code — table name (e.g.,
ticket,asset) - Display name — shown in the UI
- Description — optional
- Code — table name (e.g.,
Adding Fields
For each entity, add fields (columns):
- Click + Add Field on an entity
- Choose a field type (text, number, date, dropdown, lookup, etc.)
- Set properties:
- Column code — database column name
- Display name — label shown in the UI
- Required — whether the field must have a value
- Default value — pre-filled value for new records
- Max length — for text fields
See the Fields Reference for all available field types and their options.
Relationships
To link entities:
- Add a Lookup field on the child entity
- Point it to the parent entity
- dForge creates the foreign key and the reference navigation automatically
Example: A ticket entity with a customer_id lookup field pointing to the customer entity.
Constraints
Add check constraints to enforce business rules:
[quantity] > 0[end_date] >= [start_date][status] IN ('Open', 'In Progress', 'Closed')
Designing Views
Views define how users see and interact with entity data.
Creating a View
- Go to Views in your project
- Click + New View
- Choose:
- Entity — which entity this view displays
- View type — grid, kanban, list, calendar, or timeline
- Slug — URL-friendly identifier
Configuring Columns
Select which fields appear in the view and their order. For grid views, set column widths. Master-detail views (e.g., orders with order lines) are configured by adding a child entity at level 1 with a parent set field.
Data Sources
Each view has one or more data sources that define which entity to query, default filters, sort order, and the master-detail relationship if any.
Designing Menus and Folders
Build your module’s navigation:
- Go to Menus to create menu items that link to your views, reports, and sub-folders
- Go to Folders to define the folder structure your module ships with, including each folder’s row filter
- Bind entities to folders so the same entity can show different columns in different folders
- Assign icons and colors
Designing Roles
Define who can do what:
- Go to Roles in your project
- Create roles (e.g.,
manager,accountant,viewer) — module roles are namespaced to your module - For each role, assign rights to security objects:
- Entity rights:
S(Select),I(Insert),U(Update),D(Delete),C(Clone) - Action / Report / Folder rights:
E(Execute / Access)
- Entity rights:
- Roles are additive — a user with multiple roles gets the union of all their permissions
Designing Actions and Triggers
Studio also handles server-side logic:
- Actions — server-side scripts authored in the dForge DSL with
params:,canExecute:, andexecute:blocks. See Actions & Workflows. - Triggers — automation that fires actions when records are inserted, updated, deleted, or when a specific field changes.
Settings and Translations
- Settings — configurable values that admins can override per folder. Use them in formulas via
$[SettingName]. - Translations — labels and descriptions for entities, fields, menus, and actions in any locale your module supports.
Publishing
When your design is ready:
- Click Validate — Studio checks for consistency errors (missing required fields, broken references, invalid formulas, etc.)
- Fix any validation errors
- Click Export to download a
.dforgepackage, or Publish to install the module directly into the current tenant - Optionally Fork an existing project to start a new module from a working baseline
The published module behaves identically to hand-coded modules — same database tables, same security model, same package format. There is no “Studio mode” runtime; the output is just a regular dForge module.
Iterating
After publishing, you can continue editing in Studio and re-publish to apply changes. Studio handles schema migrations (adding columns, modifying constraints) automatically.