@de-view/coatl-cli
v1.0.1
Published
CLI scaffolding tool for Coatl Engine modules
Downloads
172
Maintainers
Readme
@de-view/coatl-cli
CLI scaffolding tool for Coatl Engine modules.
Generates the complete file structure for a new module — PHP classes, React frontend, REST API handlers, service providers — following Coatl Engine conventions. Auto-registers the module in app.php.
Installation
npm install -g @de-view/coatl-cliOr use directly with npx:
npx @de-view/coatl-cli create:moduleUsage
Interactive mode
coatl create:modulePrompts for module name, features, page slug, and title.
With name argument
coatl create:module NewsletterSkips the name prompt, still asks for feature selection.
From a Coatl Engine project (workspace script)
npm run create:module
npm run create:module -- NewsletterFeatures
The CLI prompts you to select which features to include:
| Feature | Default | Description |
|---------|---------|-------------|
| Page | Yes | Auto-create a WordPress page by slug |
| REST API | Yes | GET endpoint for async data fetching |
| Frontend | Yes | React + Vite entry point with @de-view/coatl-sdk |
| Shortcode | No | WordPress shortcode handler |
| AJAX | No | Legacy admin-ajax.php handler (deprecated) |
Generated structure
For a module named Newsletter with Page + REST API + Frontend:
includes/public/modules/CoatlModuleNewsletter/
├── CoatlModuleNewsletter.php # ModuleInterface implementation
├── ModuleServiceProvider.php # Container bindings + module registration
├── DataProvider.php # Inline data for first render
├── Services/
│ └── NewsletterService.php # Business logic
├── Handlers/
│ └── NewsletterApiHandler.php # REST API endpoint
└── Frontend/
├── main.tsx # React entry point
└── styles.css # Component stylesThe CLI also auto-registers the ModuleServiceProvider in includes/config/app.php.
After scaffolding
composer dump-autoload # Register the new PHP namespace
npm run dev # Vite auto-discovers the new frontend entryThen visit wp-admin > Coatl Engine > Modules to activate the module.
Naming conventions
Given the name Newsletter, the CLI derives:
| Key | Value |
|-----|-------|
| Module class | CoatlModuleNewsletter |
| Directory | CoatlModuleNewsletter |
| Handle | coatl-module-newsletter |
| Shortcode tag | coatl_newsletter |
| REST namespace | coatl-newsletter/v1 |
| Root ID | coatl-newsletter |
| Data key | coatl-module-newsletter_data |
| PHP namespace | Coatl\Modules\CoatlModuleNewsletter |
Requirements
- Node.js >= 18
- Must be run from the root of a Coatl Engine project
License
MIT
