goravel-crud-page

star 15

Generate page controller and UI files for a Goravel entity's admin page. Creates Inertia page controller and React components.

liwoo By liwoo schedule Updated 2/7/2026

name: goravel-crud-page description: Generate page controller and UI files for a Goravel entity's admin page. Creates Inertia page controller and React components. argument-hint: "[EntityName]" allowed-tools: Bash, Read, Write, Edit, Grep, Glob

Goravel CRUD Page Generator

Generate page controller and UI for $ARGUMENTS.

Step 1: Generate Page Controller

go run . artisan make:page-ctrl --controller=$ARGUMENTS

This creates app/http/controllers/<entity>s/<entity>s_page_controller.go.

Post-Generation Configuration

Edit the page controller to configure:

func NewEntityPageController() *EntityPageController {
    entityService := services.NewEntityService()

    return &EntityPageController{
        GenericPageController: contracts.NewGenericPageController(contracts.GenericPageConfig{
            ResourceType:      "entities",           // Plural snake_case
            PageComponent:     "Entity/Index",       // React component path
            Service:           entityService,
            ServiceIdentifier: auth.ServiceEntity,   // From permission_constants.go
            StatsEnabled:      false,                // Set true if you have statistics
            // Optional: Stats builder
            // StatsBuilder: func(controller *contracts.GenericPageController) map[string]interface{} {
            //     stats, _ := entityService.GetEntityStatistics()
            //     return stats
            // },
        }),
        entityService: entityService,
    }
}

Step 2: Generate UI Files

go run . artisan make:ui --page=$ARGUMENTS --request=$ARGUMENTS

This creates the React component hierarchy:

resources/js/pages/<Entity>/
├── Index.tsx                    # Main page component
└── sections/
    ├── <Entity>Columns.tsx      # Table column definitions
    ├── <Entity>CreateForm.tsx   # Create form
    ├── <Entity>DetailView.tsx   # Detail/view modal
    ├── <Entity>EditForm.tsx     # Edit form
    ├── <Entity>PageConfig.tsx   # Page configuration
    └── index.ts                 # Barrel exports

Step 3: Register Web Route

In routes/web.go, add the page route inside the authenticated group:

// Import
entityPageController := entitynames.NewEntityPageController()

// Route (inside authenticated group)
router.Get("/admin/<entity-names>", entityPageController.Index)

Step 4: Post-Generation UI Fixes

Fix Column Definitions

Edit <Entity>Columns.tsx to match your model fields:

export const entityColumns: ColumnDef<Entity>[] = [
    { accessorKey: "title", header: "Title" },
    { accessorKey: "status", header: "Status" },
    { accessorKey: "created_at", header: "Created", cell: ({ row }) => formatDate(row.original.created_at) },
];

Fix Form Fields

Edit create/edit forms to include correct field types:

  • Text inputs for strings
  • Select dropdowns for enums (use /goravel-enum to generate options)
  • Date pickers for dates
  • Checkboxes for booleans

Fix TypeScript Types

Create/update resources/js/types/<entity>.ts:

export interface Entity extends BaseModel {
    title: string;
    description: string;
    status: string;
    tags: string[];
}

Step 5: Add Simple Filters (Optional)

If entity has enum fields, add filter buttons in PageConfig:

export const entitySimpleFilters = (stats: any): SimpleFilterConfig[] => [
    {
        key: 'status-active',
        label: 'Active',
        value: 'ACTIVE',
        badge: stats?.activeCount || 0,
        filterParams: { status: 'ACTIVE' },
    },
];

Verify

After all page generation steps:

# Backend compiles (page controller + web route)
go build ./...

# Frontend compiles (generated UI components)
npx tsc --noEmit

Next Step

Run /goravel-crud-nav to add navigation and search integration.

Install via CLI
npx skills add https://github.com/liwoo/goravel-inertia-tw-starter --skill goravel-crud-page
Repository Details
star Stars 15
call_split Forks 10
navigation Branch main
article Path SKILL.md
More from Creator