sanjayaharshana / qulint-admin-panel
Qulint Admin Panel. Open-source Laravel Admin panel. No pro or paid package, free & open. Based on laravel-admin, with special thanks to z-song
Requires
- php: ^8.1
- doctrine/annotations: ^2.0
- doctrine/cache: ^2.2
- laravel/framework: ^10.0|^11.0|^12.0
- nesbot/carbon: ^2.72.6|^3.8.4
- symfony/dom-crawler: ^5.0|^6.0|^7.0
Requires (Dev)
- fakerphp/faker: ^1.20
- intervention/image: ^2.7|^3.0
- laravel/browser-kit-testing: ^7.0|^8.0
- laravel/laravel: ^10.0|^11.0|^12.0
- spatie/phpunit-watcher: ^1.22.0
Suggests
- carbonphp/carbon-doctrine-types: Optional: For Carbon integration with Doctrine (compatible versions)
- doctrine/dbal: Optional: For advanced database operations and schema management.
- intervention/image: Required to handling and manipulation upload images (^2.7|^3.0).
- spatie/eloquent-sortable: Required to built orderable gird.
Conflicts
- doctrine/dbal: <3.0
- nesbot/carbon: <2.72.6
README
A modern, feature-rich Laravel admin panel that's completely free and open-source. Built on top of Laravel framework with a beautiful, responsive interface and extensive functionality. Qulint Admin Panel is an upgraded fork of Open Admin that supports Laravel 11 and Laravel 12, since the original Open Admin project has stopped development after Laravel 10.
What's New in v3.0.25
🔧 Release: Laravel Native Schema Fallback
- ✅ Added Laravel Native Fallback: Added fallback to Laravel's native schema methods when Doctrine is not available
- ✅ Enhanced Compatibility: Now works without requiring Doctrine DBAL at all
- ✅ Improved Error Handling: Graceful fallback instead of throwing exceptions
- ✅ Better Resource Generation: Can generate controllers even without Doctrine DBAL
🔧 Laravel Native Schema Support
- Native Schema Builder: Uses Laravel's
getSchemaBuilder()->getColumnListing()
method - Doctrine-like Objects: Creates compatible column objects for existing code
- No Dependencies: Works without requiring any additional packages
- Universal Compatibility: Works with all Laravel versions and database types
Features
Core Features
- Modern UI/UX: Clean, responsive design with Bootstrap 5
- CRUD Operations: Complete Create, Read, Update, Delete functionality
- Form Builder: Rich form components with validation
- Data Grid: Advanced data tables with sorting, filtering, and pagination
- Authentication: Built-in user authentication and authorization
- Role-based Access Control: Granular permissions system
- File Management: Image and file upload handling
- API Support: RESTful API endpoints
- Multi-language: Internationalization support
Form Components
- Text, Textarea, Email, Password fields
- Select, Multiple Select, Radio, Checkbox
- Date, DateTime, Time, DateRange pickers
- File upload, Image upload
- Color picker, Slider, Rate
- Map integration, Rich text editor
- Custom field types support
Grid Features
- Sortable columns
- Advanced filtering
- Bulk actions
- Export functionality (CSV, Excel)
- Row actions
- Custom column renderers
- Responsive design
Extensions & Widgets
- Dashboard widgets
- Charts and statistics
- Log viewer
- Backup management
- Configuration manager
- Media manager
- API tester
- Scheduling tools
Requirements
- PHP >= 8.1
- Laravel >= 10.0
- MySQL/PostgreSQL/SQLite
- Composer
Installation
1. Install via Composer
composer require sanjayaharshana/qulint-admin-panel
2. Publish Assets
IMPORTANT: You must publish the assets to make the admin panel work correctly!
php artisan vendor:publish --provider="Qulint\Admin\AdminServiceProvider" --force
This command will publish all assets (CSS, JS, images) to public/vendor/qulint-admin/
.
If you see 404 errors for CSS/JS files, this step is required!
3. Run Installation Command
php artisan admin:install
This command will:
- Run database migrations
- Create admin tables
- Seed initial data
- Create admin directory structure
- Generate default controllers
4. Configure Database
Make sure your database configuration is set up in .env
:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your_database DB_USERNAME=your_username DB_PASSWORD=your_password
5. Access Admin Panel
Visit http://your-app.com/admin
and login with:
- Username:
admin
- Password:
admin
Quick Start
Creating a Resource
Generate a new admin resource:
php artisan admin:make UserController --model=App\\User
Basic Controller Example
<?php namespace App\Admin\Controllers; use App\User; use Qulint\Admin\Form; use Qulint\Admin\Grid; use Qulint\Admin\Show; class UserController extends AdminController { protected $title = 'Users'; protected function grid() { $grid = new Grid(new User()); $grid->column('id', 'ID')->sortable(); $grid->column('name', 'Name'); $grid->column('email', 'Email'); $grid->column('created_at', 'Created At'); return $grid; } protected function form() { $form = new Form(new User()); $form->text('name', 'Name')->required(); $form->email('email', 'Email')->required(); $form->password('password', 'Password'); return $form; } protected function show($id) { $show = new Show(User::findOrFail($id)); $show->field('id', 'ID'); $show->field('name', 'Name'); $show->field('email', 'Email'); $show->field('created_at', 'Created At'); return $show; } }
Adding Menu Items
use Qulint\Admin\Facades\Admin; Admin::menu()->add([ 'title' => 'Users', 'icon' => 'fa-users', 'path' => 'users', ]);
Customization
Custom Theme
You can customize the admin panel appearance by modifying the CSS variables or creating a custom theme.
Custom Fields
Create custom form fields by extending the base Field class:
use Qulint\Admin\Form\Field; class CustomField extends Field { protected $view = 'admin.form.custom-field'; public function render() { return view($this->view, ['field' => $this]); } }
Custom Actions
use Qulint\Admin\Actions\RowAction; class CustomAction extends RowAction { public $name = 'Custom Action'; public $icon = 'fa-cog'; public function handle($model) { // Your custom logic here return $this->response()->success('Action completed!'); } }
Configuration
The main configuration file is located at config/admin.php
. Key configuration options:
Environment Variables
For cloud storage configurations, use environment variables as described in ENVIRONMENT.md:
# AWS S3 AWS_ACCESS_KEY_ID=your-aws-access-key AWS_SECRET_ACCESS_KEY=your-aws-secret-key AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET=your-s3-bucket # Alibaba Cloud OSS ALIYUN_ACCESS_ID=your-aliyun-access-id ALIYUN_ACCESS_KEY=your-aliyun-access-key ALIYUN_BUCKET=your-oss-bucket ALIYUN_ENDPOINT=oss-cn-shanghai.aliyuncs.com # Qiniu Cloud Storage QINIU_ACCESS_KEY=your-qiniu-access-key QINIU_SECRET_KEY=your-qiniu-secret-key QINIU_BUCKET=your-qiniu-bucket
Security: Never commit real credentials to your repository. Always use environment variables for sensitive information.
return [ 'name' => 'Qulint Admin', 'logo' => '<b>Qulint</b> Admin', 'logo-mini' => '<b>QA</b>', 'route' => [ 'prefix' => 'admin', 'namespace' => 'App\\Admin\\Controllers', 'middleware' => ['web', 'admin'], ], 'directory' => app_path('Admin'), 'login_url' => 'admin/auth/login', 'logout_url' => 'admin/auth/logout', ];
Troubleshooting
Asset Loading Issues
If you're experiencing 404 errors for CSS/JS files like:
GET http://localhost:8000/vendor/qulint-admin/css/styles.css 404 (Not Found)
GET http://localhost:8000/vendor/qulint-admin/js/qulint-admin.js 404 (Not Found)
Solution: Publish the assets using the command above. The assets must be published to your Laravel application's public directory.
For detailed troubleshooting, see ASSET_TROUBLESHOOTING.md.
Common Issues
- Assets not loading: Run
php artisan vendor:publish --provider="Qulint\Admin\AdminServiceProvider" --force
- Class not found errors: Clear cache with
php artisan config:clear && php artisan cache:clear
- Database errors: Check your database configuration in
.env
- Permission errors: Ensure proper file permissions on
storage/
andbootstrap/cache/
Getting Help
- Documentation: https://qulint.com/docs/
- GitHub Issues: Create an issue
- Asset Troubleshooting: ASSET_TROUBLESHOOTING.md
Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Setup
- Fork the repository
- Clone your fork
- Install dependencies:
composer install
- Run tests:
composer test
- Make your changes
- Submit a pull request
Testing
Run the test suite:
composer test
Or run specific test files:
./vendor/bin/phpunit tests/InstallTest.php
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Based on Open Admin by the Open Admin team
- Originally forked from laravel-admin by z-song
- Built with Laravel framework
- Uses Bootstrap 5 for UI components
Support
- Email: info@qulint.com
- GitHub Issues: Create an issue
- Documentation: https://qulint.com/docs/
Changelog
See CHANGELOG.md for a list of changes and version history.
Made with love by the Qulint Team