dForge for VS Code
Authoring support for dForge modules — a metadata-driven, multi-tenant business application platform.
This extension turns VS Code into a first-class dForge module editor: every file you create or edit is validated against the live platform schemas, the sidebar surfaces the module structure at a glance, and one-click commands wrap the dforge-cli so you never leave the editor to pack, install, or scaffold.
Features
A dedicated dForge activity-bar view groups every module file by its semantic role — Entities, Data views, Folders, Menus, Roles, Actions, Triggers, Scheduled jobs, Webhooks, Reports, Queries, Print templates, Seed data, Settings, Translations. Click any node to open the underlying file. Right-click a module to Pack, Install to tenant, Validate, or reveal the module root in the OS file manager.
Inline JSON schema validation
Every dForge file pattern is auto-bound to its schema via contributes.jsonValidation — no .vscode/settings.json setup, no manual $schema references in your files. Errors surface as red squigglies as you type:
| File pattern |
Schema |
manifest.json |
Module manifest (code, version, dependencies, tags, kind, …) |
entities/*.json |
Entity definition (columns, traits, formulas, number sequences) |
ui/data_views.json |
Grid / list / card / form views |
ui/folders.json |
Folder tree with row-level security filters |
ui/menus.json |
Nested menu structure |
ui/reports.json |
Reports with parameter definitions |
ui/print_templates.json |
Print template registry |
security/roles.json |
Role definitions and rights matrix |
logic/jobs.json |
Scheduled jobs (cron + action) |
logic/triggers.json |
Entity triggers (insert / update / delete / status change) |
logic/webhooks.json |
Webhook subscriptions |
seed-data/*.json |
Seed data files |
settings.json |
Module settings declarations |
The bundled dForge: Validate Module command runs the same schemas across every file in your module (not just the open editors) and routes errors to the Problems panel.
DSL syntax highlighting
First-class TextMate grammar for *.dsl files (the dForge action DSL — a JS ES5 subset executed via Jint):
- Block labels (
params:, canExecute:, onBeforeStart:, execute:)
- Param declarations (
name: text required "desc", name: ref entity required)
- Bracket field access (
[fieldName]), param access (params[name])
- All 30 built-in functions (
query, insert, notify, error, nextNumber, exit, …)
records global, JS keywords, strings, numbers, operators, comments
Smart CLI integration
Commands shell out to @dforge-core/dforge-cli. The extension auto-detects a globally-installed dforge-cli on PATH and uses it; otherwise it falls back to npx -y @dforge-core/dforge-cli (downloads once, cached by npm afterwards). Run dForge: Install CLI Globally from the command palette to skip the first-run download.
Commands
All commands are prefixed dForge: in the command palette.
| Command |
What it does |
| Scaffold New Module… |
Interactive wizard via dforge-cli init module — prompts for code, displayName, entities, traits, preset |
| Pack Module |
Builds a .dforge zip from the right-clicked module |
| Install Module to Tenant… |
Pushes the module to a running dForge tenant. Picks from dforge.tenants (or falls back to dforge.tenantUrl / prompt). |
| Sign In to Tenant… |
Opens the browser to a tenant's login page and stores the session in the CLI. Run once per tenant before installing — the CLI remembers you. |
| Sign Out from Tenant… |
Clears the CLI's stored session for a tenant. |
| Show Signed-In User… |
Displays which account is currently signed in for a tenant. |
| Validate Module (schemas) |
Runs schema validation across every file in the module; results go to the Problems panel |
| Reveal Module Root |
Opens the module's root folder in the OS file manager |
| Install CLI Globally |
One-time npm install -g @dforge-core/dforge-cli so commands skip the npx download |
| Refresh |
Re-scans the workspace for manifest.json files |
Configuration
| Setting |
Default |
Description |
dforge.cliPath |
npx -y @dforge-core/dforge-cli |
Command used to invoke the CLI. Auto-prefers a globally-installed dforge-cli when one is on PATH. |
dforge.tenantUrl |
"" |
Default DFORGE_URL for Install Module to Tenant. Empty = prompt every time. |
dforge.validateOnSave |
false |
Run full-module schema validation whenever any module file is saved. Off by default — the inline LSP validation is usually enough. |
Quick start
- Install the extension.
- Open a folder containing one or more
manifest.json files — the dForge sidebar lights up.
- Either:
- Scaffold a fresh module: Click + in the sidebar header → dForge: Scaffold New Module…
- Edit an existing one: Files validate as you type; errors appear inline.
- Pack and install: Right-click the module in the sidebar → Install Module to Tenant…
Requirements
- VS Code 1.85 or newer.
- Node.js 18+ if using the default
npx-based CLI. Skipped entirely if you install @dforge-core/dforge-cli globally.
- A running dForge tenant for
Install Module to Tenant (the dForge platform itself runs in Docker — see dForge-core for setup).
Local Development
There are two useful local development modes for this extension.
1. Full extension runtime
Use this when you need the real VS Code integration: module tree, context menus,
commands, and the actual extension-host webview behavior.
- Open this folder in VS Code:
C:\Ed\dforge-editor-support\vscode
- Build once:
npm run dev:build
Or keep it rebuilding in the background:
npm run dev:watch
- Press
F5.
This launches an Extension Development Host window and opens
C:\Ed\dForge-core as the test workspace. After code changes, use
Developer: Reload Window in that host window.
2. Fast UI preview
Use this when you only want to inspect the Module Workbench layout, styling, and
translations UI without opening an Extension Development Host.
Run:
npm run preview:workbench
This generates:
tmp/workbench-preview.html
By default the preview uses real module data from:
C:\Ed\dForge-core\modules\crm
This preview is intended for visual iteration. It does not replace the full
extension runtime for command handling, tree integration, or other VS Code host
behavior.
How it stays in sync
JSON schemas are vendored from the @dforge-core/dforge-mcp npm package at package time, so every release of this extension ships the schemas that were current when it was built. Schemas in the MCP package are mirrored from the canonical docs/schemas/ directory in dForge-core.
Links
License
MIT — see LICENSE.