PHPackages                             ssnukala/sprinkle-crud5 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. ssnukala/sprinkle-crud5

ActiveUserfrosting-sprinkle[Admin Panels](/categories/admin)

ssnukala/sprinkle-crud5
=======================

CRUD Module for UserFrosting 5.0.

0.6.5(1y ago)017MITPHPPHP ^8.0

Since Dec 23Pushed 9mo ago1 watchersCompare

[ Source](https://github.com/ssnukala/sprinkle-crud5)[ Packagist](https://packagist.org/packages/ssnukala/sprinkle-crud5)[ Docs](https://github.com/userfrosting/UserFrosting)[ RSS](/packages/ssnukala-sprinkle-crud5/feed)WikiDiscussions main Synced 2w ago

READMEChangelog (10)Dependencies (15)Versions (16)Used By (0)

CRUD5 Sprinkle for UserFrosting 5.x
===================================

[](#crud5-sprinkle-for-userfrosting-5x)

[![Version](https://camo.githubusercontent.com/f8a72d53c46b727f2660924d9456fb7cdba99af9e46ce31d5494cb49788267b7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d352e302e302d626c75652e737667)](https://github.com/ssnukala/sprinkle-crud5)[![License](https://camo.githubusercontent.com/8bb50fd2278f18fc326bf71f6e88ca8f884f72f179d3e555e20ed30157190d0d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e2e737667)](LICENSE.md)[![UserFrosting](https://camo.githubusercontent.com/1868f388dcd471e1b2f7ca34578ab656fd94908d77c5d60310a1b18203c4e72a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5573657246726f7374696e672d352e782d627269676874677265656e2e737667)](https://www.userfrosting.com)

A powerful, schema-driven CRUD (Create, Read, Update, Delete) system for UserFrosting 5.x that allows you to rapidly build complete CRUD interfaces through simple YAML configuration files.

✨ Features
----------

[](#-features)

- **🚀 Rapid Development**: Create full CRUD interfaces in minutes with YAML configuration
- **📋 Schema-Driven**: Define tables, columns, validations, and forms using YAML
- **🎨 Consistent UI**: Uniform interface across all CRUD operations using AdminLTE
- **🔒 Permission-Based**: Built-in permission system integrated with UserFrosting
- **📝 Auto Forms**: Automatic form generation with client &amp; server-side validation
- **📊 Data Tables**: Sortable, filterable, paginated tables with Sprunje
- **🔧 Extensible**: Easy to customize controllers, views, and business logic
- **✅ Type-Safe**: Leverages PHP 8+ features with strict typing

📖 Documentation
---------------

[](#-documentation)

**Complete documentation is available in [DOCUMENTATION.md](DOCUMENTATION.md)**

The documentation includes:

- Detailed installation instructions
- Complete architecture overview
- Configuration guide with examples
- Usage examples and best practices
- API reference
- Advanced topics and customization
- Troubleshooting guide

🚀 Quick Start
-------------

[](#-quick-start)

### Installation

[](#installation)

```
composer require ssnukala/sprinkle-crud5
```

### Register Sprinkle

[](#register-sprinkle)

```
// app/src/MyApp.php
use UserFrosting\Sprinkle\CRUD5\CRUD5;

public function getSprinkles(): array
{
    return [
        Core::class,
        Account::class,
        Admin::class,
        AdminLTE::class,
        CRUD5::class,  // Add this
    ];
}
```

### Run Migrations

[](#run-migrations)

```
php bakery migrate
npm install
npm run build
```

### Create Your First CRUD Interface

[](#create-your-first-crud-interface)

Create `app/schema/crud5/products.yaml`:

```
---
model: products
title: Product Management
description: Manage products inventory
permission: c5_user

table:
  id: table-products
  css-class: crud5-table
  columns:
    name:
      label: "PRODUCT NAME"
      sortable: true
      searchable: true
    price:
      label: "PRICE"
      sortable: true
    actions:
      label: "ACTIONS"
      template: actions
```

Create request schema `app/schema/requests/products/create.yaml`:

```
name:
  validators:
    required:
      message: "Product name is required"
    length:
      max: 255
  form:
    type: text
    label: "Product Name"
    placeholder: "Enter product name"

price:
  validators:
    required:
      message: "Price is required"
    numeric:
      message: "Must be a number"
  form:
    type: number
    label: "Price"
    step: "0.01"
```

Copy `create.yaml` to `edit-info.yaml`, then access: **`/crud5/products`**

**That's it!** You now have a complete CRUD interface with list, create, edit, and delete functionality.

🎯 Key Components
----------------

[](#-key-components)

### Routes

[](#routes)

PatternDescription`/crud5/{slug}`List view page`/api/crud5/{slug}`API endpoints (GET, POST, PUT, DELETE)`/modals/crud5/{slug}/create`Create modal form`/modals/crud5/{slug}/edit`Edit modal form### Controllers

[](#controllers)

- **BasePageListAction** - List views with Sprunje
- **BaseCreateAction** - Create records
- **BaseEditAction** - Update records
- **BaseDeleteAction** - Delete records
- **BaseEditModal** - Form modals

### Configuration Files

[](#configuration-files)

- `app/schema/crud5/{table}.yaml` - Table configuration
- `app/schema/requests/{table}/create.yaml` - Create form schema
- `app/schema/requests/{table}/edit-info.yaml` - Edit form schema

💡 Example Use Cases
-------------------

[](#-example-use-cases)

- User management systems
- Product catalogs
- Content management
- Inventory tracking
- Any database table CRUD operations

🛠️ Requirements
---------------

[](#️-requirements)

- PHP ≥ 8.0
- UserFrosting ≥ 5.0
- FormGenerator ~5.1.0
- AdminLTE Theme ≥ 5.0

📚 Features In Detail
--------------------

[](#-features-in-detail)

### Dynamic CRUD Operations

[](#dynamic-crud-operations)

Complete Create, Read, Update, Delete operations for any table through configuration alone.

### Schema-Driven Configuration

[](#schema-driven-configuration)

Define everything in YAML: columns, validation rules, form fields, permissions, display templates.

### Permission System

[](#permission-system)

Built-in permissions (`c5_user`, `c5_admin`) with support for custom permissions.

### Form Generation

[](#form-generation)

Automatic forms with validation using FormGenerator library.

### Data Tables

[](#data-tables)

Sortable, searchable, paginated tables using Sprunje.

### Middleware Injection

[](#middleware-injection)

Automatic model loading and injection based on routes.

### Extensibility

[](#extensibility)

Easy to extend with custom controllers, validators, templates, and business logic.

🤝 Contributing
--------------

[](#-contributing)

Contributions are welcome! Please feel free to submit a Pull Request.

📝 License
---------

[](#-license)

This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details.

👤 Author
--------

[](#-author)

**Srinivas Nukala**

- Website:
- GitHub: [@ssnukala](https://github.com/ssnukala)

🙏 Acknowledgments
-----------------

[](#-acknowledgments)

Built with:

- [UserFrosting](https://www.userfrosting.com) - PHP framework
- [FormGenerator](https://github.com/lcharette/UF_FormGenerator) - Dynamic forms
- [AdminLTE](https://adminlte.io) - Admin theme

📖 Further Reading
-----------------

[](#-further-reading)

- [Complete Documentation](DOCUMENTATION.md)
- [UserFrosting Documentation](https://learn.userfrosting.com)
- [GitHub Repository](https://github.com/ssnukala/sprinkle-crud5)

---

**Note**: For complete installation instructions, configuration options, API reference, and advanced usage, please refer to [DOCUMENTATION.md](DOCUMENTATION.md).

###  Health Score

29

—

LowBetter than 57% of packages

Maintenance48

Moderate activity, may be stable

Popularity6

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 73.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~34 days

Recently: every ~14 days

Total

14

Last Release

525d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/5246509?v=4)[ssnukala](/maintainers/ssnukala)[@ssnukala](https://github.com/ssnukala)

---

Top Contributors

[![ssnukala](https://avatars.githubusercontent.com/u/5246509?v=4)](https://github.com/ssnukala "ssnukala (28 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (10 commits)")

---

Tags

cruduserfrostingphp user managementSprinkle

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/ssnukala-sprinkle-crud5/health.svg)

```
[![Health](https://phpackages.com/badges/ssnukala-sprinkle-crud5/health.svg)](https://phpackages.com/packages/ssnukala-sprinkle-crud5)
```

###  Alternatives

[dedoc/scramble

Automatic generation of API documentation for Laravel applications.

2.2k12.6M140](/packages/dedoc-scramble)[psalm/plugin-laravel

Psalm plugin for Laravel

3345.4M354](/packages/psalm-plugin-laravel)[tempest/framework

The PHP framework that gets out of your way.

2.3k37.6k21](/packages/tempest-framework)[userfrosting/userfrosting

A secure, modern user management system for PHP.

1.7k11.5k](/packages/userfrosting-userfrosting)[cakephp/bake

Bake plugin for CakePHP

11212.2M223](/packages/cakephp-bake)[dereuromark/cakephp-ide-helper

CakePHP IdeHelper Plugin to improve auto-completion

1892.4M48](/packages/dereuromark-cakephp-ide-helper)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
