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
| Resource | Typical file | Required |
|---|---|---|
| Manifest | plugin.json | Yes |
| Models | models/*.json | Usually |
| Fields | Inside model or bindings | Usually |
| Dictionaries | dictionaries/*.json | Optional |
| Commands | commands/*.json | Usually |
| Pages | pages/*.json | Usually |
| Menus | menus.json | Usually |
| Permissions | permissions.json | Usually |
| Bootstrap | default-bootstrap.json | Recommended |
| i18n | i18n/en.json | Recommended |
Import lifecycle
Parse plugin directory
-> validate manifest
-> validate resource references
-> preview conflicts
-> import resources
-> publish models/pages/commands
-> register menus and permissionsUse 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.jsonCommon validation failures
| Failure | Cause | Fix |
|---|---|---|
| Missing model reference | Page or command references a model code not imported | Add model or fix code |
| Missing field reference | Page column or command field references unknown field | Add field or correct field code |
| Menu hidden | Menu permission is not registered or not assigned | Add permission and bootstrap role |
| Inline binding rules ignored | Binding rules live inside command file instead of registered resource | Move to standalone resource when required |
| Import succeeds but UI missing | Page not published or menu path wrong | Check page status and menu path |
Publish command
aura plugin validate plugins/project-tracker
aura plugin publish plugins/project-tracker --yesFor 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.