A comprehensive Laravel package that provides back-end support for building a CMS with any front-end framework. This package offers a complete set of features for content management, user management, authentication, and more.
- Content Management: Content types, taxonomies, and media management
- Admin Interface: Admin pages, dashboard widgets, and settings management
- User Management: User roles, permissions, and profiles
- Authentication: Two-factor authentication with Laravel Sanctum integration
- Notifications: Comprehensive notification system
- Themes & Plugins: Support for themes and plugins
⚠️ Experimental in Beta - Core Updates: Automatic update checking and management with rollback support
- PWA Support: Progressive Web App features
- Audit Logging: Track changes and user actions
- PHP 8.2 or higher
- Laravel 12.0 or higher
- Laravel Sanctum 4.1 or higher
You can install the CMS Framework package by running the following composer command:
composer require artisanpack-ui/cms-frameworkAfter installation, publish the configuration file:
php artisan vendor:publish --tag=cms-framework-configRun the migrations to set up the database tables:
php artisan migrate- Installation Guide - Detailed installation and setup instructions
- Configuration - Configuration options and environment setup
- Usage Guide - Comprehensive usage examples and tutorials
- API Documentation - Complete REST API reference
- Migration Guide - Migrating from other CMS frameworks
- Testing - Testing strategies and examples
- Performance & Troubleshooting - Optimization and common issues
- Contributing - Development and contribution guidelines
Register a custom content type:
use ArtisanPackUI\CMSFramework\Features\ContentTypes\ContentTypeManager;
app(ContentTypeManager::class)->register('product', [
'name' => 'Product',
'plural' => 'Products',
'description' => 'Products for the store',
'supports' => ['title', 'editor', 'thumbnail'],
]);Register a custom admin page:
use ArtisanPackUI\CMSFramework\Features\AdminPages\AdminPagesManager;
app(AdminPagesManager::class)->addPage([
'title' => 'Custom Settings',
'slug' => 'custom-settings',
'callback' => function() {
return view('custom.settings');
}
]);Register and retrieve settings:
use ArtisanPackUI\CMSFramework\Features\Settings\SettingsManager;
// Register a setting
app(SettingsManager::class)->register('site_name', 'My Awesome Site');
// Get a setting
$siteName = app(SettingsManager::class)->get('site_name');The CMS Framework uses hooks and filters for extensive customization:
// addFilter and addAction are global helper functions provided by the framework
// Add a filter
addFilter('ap.cms.migrations.directories', function($directories) {
$directories[] = __DIR__ . '/database/migrations';
return $directories;
});
// Add an action
addAction('ap.cms.after_content_save', function($content) {
// Do something after content is saved
});The following features are experimental in the 1.0.0 release and should be used with caution in production environments:
The plugin system provides a foundation for extending the CMS with custom functionality.
What Works:
- Plugin model with activation/deactivation tracking
- Plugin manager for lifecycle management
- Plugin installation and validation
- Plugin update manager integration
Known Limitations:
- Plugin lifecycle hooks not fully implemented
- No plugin dependency management
- Limited plugin configuration API
- No plugin marketplace integration
Recommendation: Use for testing and development. Not recommended for production until full lifecycle support is added in a future release.
The theme system allows customization of the CMS appearance.
What Works:
- Theme manager with theme discovery
- Theme activation mechanism
- JSON manifest validation
- Basic theme structure
Known Limitations:
- Asset compilation not implemented
- No child theme support
- Limited theme customization API
- No theme preview functionality
Recommendation: Use for testing and development. Full theme support including asset compilation and child themes will be added in a future release.
If you encounter issues with experimental features, please report them on our issue tracker with the experimental label.
We welcome contributions! Please see Contributing Guide for details on:
- Development setup
- Code style guidelines
- Testing requirements
- Submission process
If you discover a security vulnerability, please send an email to security@artisanpack.com. All security vulnerabilities will be promptly addressed.
The MIT License (MIT). Please see License File for more information.
Please see CHANGELOG.md for more information on what has changed recently.