gon make:module

Scaffold a new module under src/{Name}/ from the built-in templates. Ships with Provider, routes, migrations skeleton, lang files, .github/workflows/validate.yml, and by default a full CRUD (Model + Repository + Pages + register*() methods).

Usage

gon make:module Admissions # Default: --with-crud=Admission (singular of module name)
gon make:module Admissions --with-crud=Entry # Custom model name
gon make:module Hooks --no-crud # Minimal module, no Model/Repo/Pages
gon make:module Admissions --plural=Entries # Override naive pluralizer
gon make:module Admissions --crud-slug=admissions/entries # Override default {module}/{models}
gon make:module Admissions --table=admissions_entries # Override default table name
gon make:module Admissions --menu-group=Obchod # Admin menu group (default: Obchod)
gon make:module Admissions --disabled # Do not enable in modules-enabled

GitHub repo flags

gon make:module Foo # Creates rozklad/gon-foo automatically (private)
gon make:module Foo --no-repo # Skip git init + GitHub repo creation
gon make:module Foo --public # Public repo instead of private
gon make:module Foo --org=rozklad # Under an org (default: authenticated user)
gon make:module Foo --skip-push # Init locally but don't push

What happens

  1. Copies templates to src/{Name}/ with placeholder substitution ({{NAME}}, {{KEBAB}}, {{MODEL}}, …).
  2. Copies .github/workflows/validate.yml from gon-cli shared source.
  3. Enables the module in storage/config/modules-enabled.php.
  4. Unless --no-repo: git init -b main, initial commit, creates rozklad/gon-{kebab}, pushes.

CRUD slug defaults to {module-kebab}/{models-kebab} — sub-resource convention (matches users/tokens, bank/accounts). Pages are placed under Pages/{Models}/ so the AdminController resolves Inertia views correctly.

See gon publish to publish an existing local module later.