Config-only Plugins

A config-only plugin is a plugin that ships business capability without custom Java or React code. It uses JSON resources to define models, commands, pages, menus, permissions, dictionaries, data sources, and bootstrap assignments.

This is the recommended starting point for most AuraBoot modules.

Why config-only first

Config-only plugins are easier to:

  • Review in pull requests
  • Validate automatically
  • Import into multiple environments
  • Reuse across tenants
  • Upgrade safely
  • Explain to business users

Code extensions remain available, but they should be added after the module proves it needs them.

Resource map

ResourceTypical fileRequired
Manifestplugin.jsonYes
Modelsmodels/*.jsonUsually
FieldsInside model or bindingsUsually
Dictionariesdictionaries/*.jsonOptional
Commandscommands/*.jsonUsually
Pagespages/*.jsonUsually
Menusmenus.jsonUsually
Permissionspermissions.jsonUsually
Bootstrapdefault-bootstrap.jsonRecommended
i18ni18n/en.jsonRecommended

Import lifecycle

Parse plugin directory
  -> validate manifest
  -> validate resource references
  -> preview conflicts
  -> import resources
  -> publish models/pages/commands
  -> register menus and permissions

Use preview/validation early. Most plugin mistakes are reference mistakes: a page points to a missing model, a command points to an unpublished field, or a menu uses a permission code that was never registered.

Minimal manifest

{
  "pluginId": "com.example.project-tracker",
  "namespace": "pt",
  "version": "1.0.0",
  "displayName:en": "Project Tracker",
  "description": "Simple project and task tracking",
  "resourceDirs": {
    "models": "models",
    "commands": "commands",
    "pages": "pages",
    "dicts": "dictionaries",
    "menus": "menus.json",
    "permissions": "permissions.json",
    "roles": "default-bootstrap.json"
  }
}

Recommended directory structure

plugins/project-tracker/
  plugin.json
  dictionaries/
    task-status.json
    task-priority.json
  models/
    project.json
    task.json
  commands/
    create-project.json
    update-project.json
    create-task.json
    update-task.json
    complete-task.json
  pages/
    project-list.json
    project-detail.json
    task-list.json
    task-form.json
  menus.json
  permissions.json
  default-bootstrap.json
  i18n/
    en.json

Common validation failures

FailureCauseFix
Missing model referencePage or command references a model code not importedAdd model or fix code
Missing field referencePage column or command field references unknown fieldAdd field or correct field code
Menu hiddenMenu permission is not registered or not assignedAdd permission and bootstrap role
Inline binding rules ignoredBinding rules live inside command file instead of registered resourceMove to standalone resource when required
Import succeeds but UI missingPage not published or menu path wrongCheck page status and menu path

Publish command

aura plugin validate plugins/project-tracker
aura plugin publish plugins/project-tracker --yes

For local debugging, inspect plugin import logs. The runtime validator is the source of truth for schema and reference issues.

Design guidelines

  • Keep each business module in one plugin directory.
  • Use stable codes; changing codes after import is a migration.
  • Keep dictionaries close to models that use them.
  • Use command-specific forms rather than generic model forms.
  • Register permissions before binding them to menus.
  • Add i18n labels from the beginning.

Next steps