RMS Core is a powerful, modern admin panel package for Laravel applications. Built with Laravel 12 alignment and featuring a complete CRUD system with advanced form generation, list management, and administrative tools.
- π― Advanced CRUD System - Complete Create, Read, Update, Delete operations
- π Dynamic Form Generation - Automatic form generation with validation
- π Smart List Management - Advanced filtering, sorting, and pagination
- π¨ Beautiful UI - Built with Limitless Bootstrap 5 theme
- π Dark/Light Theme - Complete theme switching support
- π± Mobile Responsive - Fully responsive admin interface
- π Authentication System - Built-in admin authentication
- π Statistics & Analytics - Real-time stats and reporting
- π Advanced Search & Filter - Powerful search and filtering capabilities
- π€ Excel Export - Export data to Excel/CSV formats
- πΌοΈ File Upload System - Complete file and image upload management
- π Multi-language Support - Persian/Farsi language support
- β‘ Plugin System - Extensible plugin architecture
- PHP ^8.1
- Laravel ^11.0
- Composer
- Node.js & NPM (for assets)
composer require rmscms/core- Extend AdminController:
<?php
namespace App\Http\Controllers\Admin;
use RMS\Core\Controllers\Admin\AdminController;
use RMS\Core\Contracts\List\HasList;
use RMS\Core\Contracts\Form\HasForm;
class UsersController extends AdminController implements HasList, HasForm
{
public function table(): string
{
return 'users';
}
public function modelName(): string
{
return \App\Models\User::class;
}
public function baseRoute(): string
{
return 'users';
}
public function routeParameter(): string
{
return 'user';
}
public function getListFields(): array
{
return [
Field::make('id')->withTitle('ID')->sortable(),
Field::make('name')->withTitle('Name')->searchable(),
Field::make('email')->withTitle('Email')->searchable(),
Field::make('created_at')->withTitle('Created')->type(Field::DATE_TIME),
];
}
public function getFieldsForm(): array
{
return [
Field::string('name', 'Name')->required(),
Field::string('email', 'Email')->required(['email']),
Field::string('password', 'Password')->required(['min:8']),
];
}
}- Register Routes:
use RMS\Core\Helpers\RouteHelper;
RouteHelper::adminResource(UsersController::class, 'admin.users');A safe tool to align schema from database A β B without touching sensitive tables like users and settings.
- Vendor-aware migration scanning via Laravel Migrator (supports loadMigrationsFrom)
- Smart-skip logic:
- If a migration contains Schema::create and the table already exists on B β mark that migration as Ran (skip execution)
- If a migration only adds columns and all target columns already exist on B β mark as Ran
- Real column changes (alter/change) will run when needed
- --dry-run to simulate changes (no writes) and print a final report
Usage:
php artisan db:shift --a=DB_A --b=DB_B --b-connection=mysql_b --apply --dry-runOptions:
- --a: source database name (A)
- --b: target database name (B)
- --b-connection: Laravel connection name for B (default: mysql)
- --ignore: protected tables list (default: users,settings)
- --ignore-migrations: additional migration names to mark as Ran
- --apply: perform safe apply (mark and then migrate)
- --dry-run: simulate with --pretend
Outputs:
- Table comparison (Only in A / Only in B)
- Column diff summary (Only in A/B, Changed)
- Plan (safe suggestions) with icons and notes
- Final report: Fixed, SmartCreate, SmartAdd, Executed/Planned
Dry-run example:
php artisan db:shift --a=iras --b=iras-new --b-connection=mysql_b --apply --dry-run- AdminController - Base controller with built-in CRUD operations
- Field System - Dynamic field generation and validation
- Traits System - Modular functionality with traits
- Interface System - Contract-based development
HasList- For list/table viewsHasForm- For create/edit formsHasStats- For statistics cardsShouldFilter- For advanced filteringShouldExport- For Excel exportChangeBoolField- For quick boolean toggles
Field::string('name', 'Name') // Text input
Field::number('age', 'Age') // Number input
Field::boolean('active', 'Active') // Boolean toggle
Field::select('role', 'Role', $options) // Select dropdown
Field::date('birth_date', 'Birth Date') // Persian date picker
Field::image('avatar', 'Avatar') // Image upload
Field::price('amount', 'Amount') // Price with formatterpublic function getStats(): array
{
return [
[
'title' => 'Total Users',
'value' => number_format(1234),
'unit' => 'users',
'icon' => 'users',
'color' => 'primary',
'colSize' => 'col-xl-3 col-md-6'
]
];
}<x-cms::menu-header title="Management" />
<x-cms::menu-item
title="Dashboard"
url="/admin"
icon="ph-house"
:routes="['admin.dashboard']"
/>
<x-cms::submenu-item
title="Users"
icon="ph-users"
:children="$usersChildren"
/>- Add on your FILE field in Blade via data-uploader="image-uploader"
- Provide optional data attributes:
- data-upload-url-base="/admin/contracts" (recommended in edit mode)
- data-controller="contracts" (fallback detection supported)
- data-ajax-upload, data-model-id, data-existing-files, data-preview, data-drag-drop
- JS resolves endpoints as:
- POST {base}/{modelId}/ajax-upload/{field}
- DELETE {base}/{modelId}/ajax-delete/{field}?file_path=...
- Private file preview (admin):
- Route: admin.files.show -> GET admin/files/{id}
- Use this URL in existing-files payload for previews.
RMS Core includes a powerful plugin system:
- Image Uploader - Drag & drop image uploads
- Persian DatePicker - Shamsi calendar support
- Enhanced Select - Advanced select dropdowns
- Amount Formatter - Price formatting
- SweetAlert2 - Beautiful notifications
Full Persian/Farsi language support with RTL layout:
// Always use translation keys
trans('admin.users_management')
trans('admin.create_new_user')
trans('admin.user_created_successfully')Enable debugging with ?debug=1 parameter:
- Performance monitoring
- Query analysis
- Field validation
- Memory usage tracking
composer testSee CHANGELOG.md for version history.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: [Coming Soon]
- GitHub Issues: https://github.com/rmscms/core/issues
- Discussions: https://github.com/rmscms/core/discussions
Made with β€οΈ by RMS Team