1.0.1 • Published 5 months ago

@prolaxu/galaxy-api-tool v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

@prolaxu/galaxy-api-tool

A powerful CLI tool for generating Galaxy API files and Vue.js CRUD components. This tool replaces bash scripts with a robust, cross-platform Node.js solution.

šŸš€ Quick Start

Use with npx (no installation required):

# Generate API files with Request validation
npx @prolaxu/galaxy-api-tool gen:api User

# Generate API files without Request (uses EmptyRequest)
npx @prolaxu/galaxy-api-tool gen:api-empty Category

# Generate Vue.js CRUD views
npx @prolaxu/galaxy-api-tool gen:views admin/User

# Generate everything (API + Views)
npx @prolaxu/galaxy-api-tool gen:all inventory/Product

šŸ“¦ Installation

Global Installation

npm install -g @prolaxu/galaxy-api-tool

Local Installation

npm install @prolaxu/galaxy-api-tool
npx galaxy-api-tool --help

šŸ› ļø Commands

gen:api <ModelName>

Generates complete Galaxy API files with Request validation.

npx @prolaxu/galaxy-api-tool gen:api User

Generated files:

  • src/GalaxyAPI/Controllers/UserController.php
  • src/GalaxyAPI/Requests/UserRequest.php
  • src/GalaxyAPI/Resources/UserResource.php

gen:api-empty <ModelName>

Generates Galaxy API files without Request validation (uses EmptyRequest).

npx @prolaxu/galaxy-api-tool gen:api-empty Category

Generated files:

  • src/GalaxyAPI/Controllers/CategoryController.php
  • src/GalaxyAPI/Resources/CategoryResource.php

gen:views <ModelInput>

Generates Vue.js CRUD components and Pinia store. Supports grouping.

# Simple model
npx @prolaxu/galaxy-api-tool gen:views User

# Grouped model
npx @prolaxu/galaxy-api-tool gen:views admin/User

# Nested grouping
npx @prolaxu/galaxy-api-tool gen:views inventory/Product

Generated files:

  • resources/assets/spa/stores/modules/[path]/use[Model]Store.js
  • resources/assets/spa/modules/[path]/[Model]Form.vue
  • resources/assets/spa/modules/[path]/[Model]ListComponent.vue
  • resources/assets/spa/modules/[path]/[Model]Select.vue

gen:all <ModelInput>

Generates both API files and Vue.js CRUD components.

# Generate everything with Request validation
npx @prolaxu/galaxy-api-tool gen:all admin/User

# Generate everything without Request validation
npx @prolaxu/galaxy-api-tool gen:all admin/User --empty

šŸŽÆ Options

Custom Output Path

All commands support a custom output path:

npx @prolaxu/galaxy-api-tool gen:api User --path /custom/project/path

Empty Request

Use --empty flag with gen:all to generate API without Request validation:

npx @prolaxu/galaxy-api-tool gen:all User --empty

šŸ“ Output Structure

API Files

src/
└── GalaxyAPI/
    ā”œā”€ā”€ Controllers/
    │   └── UserController.php
    ā”œā”€ā”€ Requests/
    │   └── UserRequest.php
    └── Resources/
        └── UserResource.php

Vue.js CRUD Files

resources/
└── assets/
    └── spa/
        ā”œā”€ā”€ modules/
        │   └── admin/
        │       └── user/
        │           ā”œā”€ā”€ UserForm.vue
        │           ā”œā”€ā”€ UserListComponent.vue
        │           └── UserSelect.vue
        └── stores/
            └── modules/
                └── admin/
                    └── user/
                        └── useUserStore.js

šŸ”§ Model Input Formats

The tool supports various model input formats:

InputOutput PathAPI Endpoint
Useruser/v2/tenant/user
admin/Useradmin/user/v2/tenant/admin/user
inventory/Productinventory/product/v2/tenant/inventory/product

šŸ“ Examples

Generate User Management

# Generate complete user management system
npx @prolaxu/galaxy-api-tool gen:all User

# Output:
# āœ… Generated all files:
#   API Files:
#     - Controller: src/GalaxyAPI/Controllers/UserController.php
#     - Request:    src/GalaxyAPI/Requests/UserRequest.php
#     - Resource:   src/GalaxyAPI/Resources/UserResource.php
#   CRUD Files:
#     šŸ“ Store: resources/assets/spa/stores/modules/user/useUserStore.js
#     šŸ“ Form: resources/assets/spa/modules/user/UserForm.vue
#     šŸ“‹ List: resources/assets/spa/modules/user/UserListComponent.vue
#     šŸ”½ Select: resources/assets/spa/modules/user/UserSelect.vue

Generate Admin Panel Components

# Generate admin-specific components
npx @prolaxu/galaxy-api-tool gen:views admin/Dashboard

# Output:
# āœ… Generated CRUD files for Dashboard:
#   šŸ“ Group: admin
#   šŸ“ Store: resources/assets/spa/stores/modules/admin/dashboard/useDashboardStore.js
#   šŸ“ Form: resources/assets/spa/modules/admin/dashboard/DashboardForm.vue
#   šŸ“‹ List: resources/assets/spa/modules/admin/dashboard/DashboardListComponent.vue
#   šŸ”½ Select: resources/assets/spa/modules/admin/dashboard/DashboardSelect.vue
#   
#   šŸ“ Next steps:
#     1. Update the columns array in DashboardListComponent.vue
#     2. Add form fields to DashboardForm.vue
#     3. Import and use components in your routes/pages
#     4. API endpoint: v2/tenant/admin/dashboard

Generate Inventory System

# Generate inventory management with empty request
npx @prolaxu/galaxy-api-tool gen:all inventory/Product --empty

# Output includes both API and CRUD files for inventory/product

🚦 Error Handling

The tool includes comprehensive error handling:

  • Model name validation: Ensures valid model names
  • Path validation: Checks for valid file paths
  • Directory creation: Automatically creates necessary directories
  • Template validation: Validates template syntax
# Invalid model name
npx @prolaxu/galaxy-api-tool gen:api ""
# āŒ Error: Model name