|  Download upMVC Module Generation ToolsThis directory contains two powerful tools for generating modules in upMVC:
1. Module Generator - Creates basic MVC, API, and React modules
2. CRUD Generator - Creates full CRUD modules with database integration 1. Module GeneratorLocated in tools/createmodule/, this tool creates different types of modules with proper MVC structure. Usagephp tools/createmodule/create-module.php
 Interactive Prompts
Enter module name (e.g., Blog)
Select module type:
- 1: basic (Standard MVC module)
- 2: api (REST API module)
- 3: react (React integration module)
 Example$ php tools/createmodule/create-module.php
=== upMVC Module Generator ===
Enter module name (e.g., Blog): Blog
Available module types:
1. basic - Standard MVC module
2. api - REST API module
3. react - React integration module
Select module type (1-3, default: 1): 1
Generating basic module 'Blog'...
? Module generated successfully!
Next steps:
1. Run 'composer dump-autoload' to update autoloader
2. Check the generated files in modules/Blog/
3. Add your custom logic to the Controller, Model, and View
4. Access your module at: http://your-domain/Blog
 Generated Structuremodules/YourModule/
??? Controller.php
??? Model.php
??? View.php
??? routes/
?   ??? Routes.php
??? templates/
    ??? index.php
 2. CRUD GeneratorLocated in tools/crudgenerator/, this tool creates full CRUD modules with database integration and form handling. UsageCreate a PHP script with your module configuration: <?php
require_once __DIR__ . '/../../vendor/autoload.php';
use Tools\CrudGenerator\CrudModuleGenerator;
// Define module name
$moduleName = 'Products';
// Define fields with SQL and HTML types
$fields = [
    [
        'name' => 'name',
        'sql_type' => 'VARCHAR(100)',
        'html_type' => 'text'
    ],
    [
        'name' => 'price',
        'sql_type' => 'DECIMAL(10,2)',
        'html_type' => 'number',
        'step' => '0.01',
        'min' => '0'
    ],
    [
        'name' => 'category',
        'sql_type' => 'VARCHAR(50)',
        'html_type' => 'select',
        'options' => [
            ['value' => 'electronics', 'label' => 'Electronics'],
            ['value' => 'clothing', 'label' => 'Clothing']
        ]
    ]
];
// Generate module
$generator = new CrudModuleGenerator($moduleName, $fields);
$generator->generate();
$generator->createTable();
 Field Types
Basic Types
// Text input
['name' => 'title', 'sql_type' => 'VARCHAR(100)', 'html_type' => 'text']
 // Number input
['name' => 'quantity', 'sql_type' => 'INT', 'html_type' => 'number'] // Email input
['name' => 'email', 'sql_type' => 'VARCHAR(255)', 'html_type' => 'email'] // Textarea
['name' => 'description', 'sql_type' => 'TEXT', 'html_type' => 'textarea'] 
2. Select Dropdown
 [ 'name' => 'status',
'sql_type' => 'VARCHAR(20)',
'html_type' => 'select',
'options' => [
    ['value' => 'active', 'label' => 'Active'],
    ['value' => 'inactive', 'label' => 'Inactive']
]
 ] 
3. Radio Buttons
 [ 'name' => 'type',
'sql_type' => 'VARCHAR(10)',
'html_type' => 'radio',
'options' => [
    ['value' => 'new', 'label' => 'New'],
    ['value' => 'used', 'label' => 'Used']
]
 ] 
### Generated Features
1. Database Integration
   - Automatic table creation
   - Prepared statements
   - SQL injection protection
2. CRUD Operations
   - Create new records
   - Read/List records
   - Update existing records
   - Delete records
3. Form Handling
   - Input validation
   - Error handling
   - CSRF protection
   - File uploads (if specified)
4. Views
   - List view with pagination
   - Create form
   - Edit form
   - Delete confirmation
### Generated Structure
 modules/YourModule/
??? Controller.php
??? Model.php
??? View.php
??? routes/
?   ??? Routes.php
??? templates/
?   ??? list.php
?   ??? create.php
?   ??? edit.php
?   ??? layout/
?       ??? header.php
?       ??? footer.php
??? sql/ ??? schema.sql
 
## Best Practices
1. Module Names
   - Use PascalCase (e.g., BlogPosts)
   - Keep names descriptive
   - Avoid special characters
2. Field Configuration
   - Use appropriate SQL types
   - Set proper field lengths
   - Add validation rules
   - Use meaningful names
3. After Generation
   - Review generated code
   - Add custom validation
   - Customize templates
   - Add indexes to database
   - Update routes if needed
## Troubleshooting
1. Permission Issues
 chmod +x tools/createmodule/create-module.php
chmod +x tools/crudgenerator/create-module.php 
2. Database Connection
   - Verify database credentials
   - Check table creation rights
   - Ensure database exists
3. Autoloader Issues
 composer dump-autoload 
## Examples
### 1. Blog Module
 $fields = [ ['name' => 'title', 'sql_type' => 'VARCHAR(200)', 'html_type' => 'text'],
['name' => 'content', 'sql_type' => 'TEXT', 'html_type' => 'textarea'],
['name' => 'author', 'sql_type' => 'VARCHAR(100)', 'html_type' => 'text'],
[
    'name' => 'status',
    'sql_type' => 'VARCHAR(20)',
    'html_type' => 'select',
    'options' => [
        ['value' => 'draft', 'label' => 'Draft'],
        ['value' => 'published', 'label' => 'Published']
    ]
]
 ]; 
### 2. Product Catalog
 $<thinking>
I have gathered enough information about both tools. Now I will create a comprehensive README.md for the tools directory that explains: 
Overview of both tools
How to use each tool
CLI commands and prompts
Examples of usage
How to extend or customize
Any prerequisites or dependencies
</thinking>
 <create_file>
<path>tools/README.md</path>
<content># Tools Directory Documentation This directory contains two powerful tools for generating modules in the upMVC framework: 
General Module Generator
CRUD Module Generator
 1. General Module GeneratorOverviewThe General Module Generator allows you to quickly scaffold a new module with a standard MVC structure or specialized types like API or React modules. How to UseRun the script from the command line: php tools/createmodule/create-module.php
 You will be prompted to enter: 
Module Name: The name of your new module (e.g., Blog)
Module Type: Choose from:
- `basic` - Standard MVC module
- `api` - REST API module
- `react` - React integration module
 Example Session=== upMVC Module Generator ===
Enter module name (e.g., Blog): Blog
Available module types:
1. basic - Standard MVC module
2. api - REST API module
3. react - React integration module
Select module type (1-3, default: 1): 1
Generating basic module 'Blog'...
? Module generated successfully!
Next steps:
1. Run 'composer dump-autoload' to update autoloader
2. Check the generated files in modules/Blog/
3. Add your custom logic to the Controller, Model, and View
4. Access your module at: http://your-domain/Blog
 OutputThe tool generates the module directory with Controller, Model, View, routes, templates, and other necessary files. 2. CRUD Module GeneratorOverviewThe CRUD Module Generator helps you create a fully functional CRUD module with database integration, including form fields with various input types. How to UseEdit the tools/crudgenerator/create-module.phpfile to specify: 
Module Name: The name of the CRUD module
Fields: An array defining each field's name, SQL type, HTML input type, and options for select/radio inputs
 Then run: php tools/crudgenerator/create-module.php
 Example Fields Definition$fields = [
    ['name' => 'name', 'sql_type' => 'VARCHAR(100)', 'html_type' => 'text'],
    ['name' => 'price', 'sql_type' => 'DECIMAL(10,2)', 'html_type' => 'number', 'step' => '0.01', 'min' => '0'],
    ['name' => 'description', 'sql_type' => 'TEXT', 'html_type' => 'textarea'],
    [
        'name' => 'category',
        'sql_type' => 'VARCHAR(50)',
        'html_type' => 'select',
        'options' => [
            ['value' => 'electronics', 'label' => 'Electronics'],
            ['value' => 'clothing', 'label' => 'Clothing'],
            ['value' => 'books', 'label' => 'Books'],
            ['value' => 'food', 'label' => 'Food & Beverages']
        ]
    ],
    [
        'name' => 'availability',
        'sql_type' => 'VARCHAR(20)',
        'html_type' => 'radio',
        'options' => [
            ['value' => 'in_stock', 'label' => 'In Stock'],
            ['value' => 'out_of_stock', 'label' => 'Out of Stock'],
            ['value' => 'pre_order', 'label' => 'Pre-order']
        ]
    ],
    ['name' => 'email', 'sql_type' => 'VARCHAR(255)', 'html_type' => 'email'],
];
 OutputThe tool generates the module files with CRUD operations and creates the corresponding database table. Extending and Customizing
Both tools generate standard MVC module structures that you can customize.
Add your business logic in the Controller and Model.
Modify templates for custom UI.
Extend the field definitions in CRUD generator for additional input types.
 Prerequisites
PHP 8.1 or higher
Composer dependencies installed (`composer install`)
Database configured and accessible
 Common Use Cases1. Blog Module with Comments$fields = [
    ['name' => 'title', 'sql_type' => 'VARCHAR(255)', 'html_type' => 'text'],
    ['name' => 'content', 'sql_type' => 'TEXT', 'html_type' => 'textarea'],
    [
        'name' => 'status',
        'sql_type' => 'VARCHAR(20)',
        'html_type' => 'select',
        'options' => [
            ['value' => 'draft', 'label' => 'Draft'],
            ['value' => 'published', 'label' => 'Published'],
            ['value' => 'archived', 'label' => 'Archived']
        ]
    ],
    ['name' => 'publish_date', 'sql_type' => 'DATETIME', 'html_type' => 'datetime-local']
];
 2. User Profile Module$fields = [
    ['name' => 'username', 'sql_type' => 'VARCHAR(50)', 'html_type' => 'text'],
    ['name' => 'email', 'sql_type' => 'VARCHAR(255)', 'html_type' => 'email'],
    [
        'name' => 'role',
        'sql_type' => 'VARCHAR(20)',
        'html_type' => 'radio',
        'options' => [
            ['value' => 'user', 'label' => 'Regular User'],
            ['value' => 'admin', 'label' => 'Administrator'],
            ['value' => 'editor', 'label' => 'Content Editor']
        ]
    ],
    ['name' => 'bio', 'sql_type' => 'TEXT', 'html_type' => 'textarea']
];
 Troubleshooting Guide1. Module Generation Issues# If permission denied
chmod +x tools/createmodule/create-module.php
chmod +x tools/crudgenerator/create-module.php
# If autoloader not found
composer dump-autoload
# If module directory already exists
rm -rf modules/YourModule
 2. Database Issues// Check database connection in etc/ConfigDatabase.php
private static $config = [
    'db' => [
        'host' => '127.0.0.1',  // Verify host
        'name' => 'your_db',    // Verify database exists
        'user' => 'your_user',  // Check credentials
        'pass' => 'your_pass',
    ],
];
// Verify table creation rights
GRANT CREATE, ALTER, DROP ON your_db.* TO 'your_user'@'localhost';
 3. Common Errors
Module Name Issues
- Use PascalCase (e.g., BlogPosts)
- Avoid special characters
- Don't use PHP reserved words
Field Type Issues
- Match SQL types with data requirements
- Use appropriate HTML input types
- Verify select/radio options format
Route Conflicts
- Check for duplicate routes
- Verify route parameters
- Update route prefix if needed
 Best Practices1. Module Organizationmodules/YourModule/
??? Controller.php      # Business logic
??? Model.php          # Database operations
??? View.php           # View handling
??? routes/            # Route definitions
??? templates/         # View templates
??? sql/              # Database schema
 2. Field Naming// Good examples
['name' => 'first_name', 'sql_type' => 'VARCHAR(50)']
['name' => 'email_address', 'sql_type' => 'VARCHAR(255)']
// Avoid
['name' => 'fn', 'sql_type' => 'VARCHAR(50)']      // Too short
['name' => 'userEmailAddress', 'sql_type' => '...'] // Use underscores
 3. Security Considerations
Always validate input
Use prepared statements
Implement CSRF protection
Sanitize output
 Support and ResourcesDocumentationGetting Help
GitHub Issues: Report bugs and feature requests
Community Forum: Ask questions and share solutions
Discord Channel: Real-time community support
 LicenseMIT License - See LICENSE file for details |