Did you mean: ?

Introduction

Welcome to the Filament CMS Pro enterprise-grade developer documentation. Filament CMS Pro is a complete, stable, high-performance visual content management plugin package built for Laravel 10/11 and Filament v5. It is designed to provide full-fledged, multi-lingual publication lifecycles, visual drag-and-drop workspace layout building, and advanced server-side telemetries.

Enterprise Framework Architecture: Fully translatable taxonomy elements, revisions rollbacks, content editing locks, automated news map builders, and an HMAC-signed background webhook notification engine.

Technical Features Mapping

Capability Backend Engine Class Configuration Parameter
Editorial Workflow Nepal360\FilamentCmsPro\Workflow\WorkflowService workflow.enabled
Visitor Analytics Nepal360\FilamentCmsPro\Http\Middleware\TrackVisitorAnalytics analytics.enabled
Post Revisions Rollback Eloquent saved model events + custom relation managers Automatic database triggers
Concurrent Editing Lock EditPost page mount checks + ContentLock Eloquent hooks 15 minutes automatic expiry
Webhooks Engine Nepal360\FilamentCmsPro\Jobs\DeliverWebhookJob Queued job execution

Installation & CLI Commands

Because the package is hosted on GitHub rather than Packagist, tell Composer how to resolve the repository by editing your Laravel application's composer.json first:

Step 1: Add VCS Repository in Laravel composer.json

composer.json
"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/Tsrgtm/Filament-CMS-PRO.git"
    }
]

Step 2: Install Composer Dependency

Terminal
composer require nepal360/filament-cms-pro:dev-main

Step 3: Publish Package Configs & Database Migrations

Shell
php artisan vendor:publish --tag="filament-cms-pro-config"
php artisan vendor:publish --tag="filament-cms-pro-migrations"
php artisan vendor:publish --tag="filament-cms-pro-views"

Step 3: Run Database Migrations

Shell
php artisan migrate

Configuration Guide

Publishing the config publishes config/filament-cms-pro.php. Define the settings mapping:

filament-cms-pro.php
return [
    'workflow' => [
        'enabled' => true,
        'slack_webhook_url' => env('CMS_SLACK_WEBHOOK_URL'),
    ],
    'analytics' => [
        'enabled' => true,
        'gravity' => 1.8,
        'exclude_paths' => [
            'admin*',
            'api/v1/analytics*',
        ],
    ],
    'comments' => [
        'auto_approve' => false,
        'spam_check' => true,
    ],
    'cache' => [
        'ttl' => 86400,
    ],
];

Filament Plugin Registration

Register the plugin inside your panel provider class (usually app/Providers/Filament/AdminPanelProvider.php) to automatically register all visual resources, widgets, and pages in the Filament workspace:

AdminPanelProvider.php
use Nepal360\FilamentCmsPro\FilamentCmsProPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->default()
        ->id('admin')
        ->plugins([
            FilamentCmsProPlugin::make(),
        ]);
}

Gutenberg Visual Block Editor

The visual content workspace utilizes visual visual block builders inside the PostResource translation forms. The visual blocks correspond to Blade view templates:

Template Overrides: Copy files from `vendor/filament-cms-pro/components/blocks` to your application path `resources/views/vendor/filament-cms-pro/components/blocks` to customize HTML styling.

Editorial Workflow Gating

Post status transitions are managed by the service provider's state machine. The allowed transitions map sequence is:

draft -> review -> fact_check -> editor_approved -> publisher_approved -> published

If a transition is attempted outside this matrix (or if fact-checking is bypassed without approval), a validation exception is thrown. Scheduled posts are processed every minute using the scheduling command:

Crontab
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

Non-Intrusive Server-Side Analytics

Visitor analytics are tracked directly on the server side via the `TrackVisitorAnalytics` middleware, avoiding Google Search Console core web vitals speed score degradation:

Post Translation Revisions

Every time a post translation record is modified, the database model automatically triggers revision logs inside the `revisions` table, tracking: locale, title, content blocks array, and the editing User ID.

In the post editing form, the Revision History relation manager list displays all past edits. Clicking Restore replaces the active translation attributes with the select log, updating the draft visual canvas instantly.

Concurrent Editing Protection (Content Locks)

When an editor opens the edit page for a post, a content lock is recorded for that post and editor. The lock stays active for 15 minutes.

If another editor attempts to open the edit page for the same post, the page redirects to the post list immediately, displaying a danger notification indicating which administrator is editing the post.

Webhooks Delivery System

Registered webhook targets receive JSON payloads triggered by post publishing, updates, deletions, and workflow state changes. Payload delivery is handled via queued background tasks with standard exponential backoff retries.

Webhook Signature Verification (HMAC SHA-256)

If a secret key is specified, requests include an X-CMS-Signature header. Verify payload signatures in your receiver applications:

PHP Receiver
$secret = 'your_configured_webhook_secret';
$payload = file_get_contents('php://input');
$receivedSignature = $_SERVER['HTTP_X_CMS_SIGNATURE'] ?? '';

$computedSignature = hash_hmac('sha256', $payload, $secret);

if (hash_equals($computedSignature, $receivedSignature)) {
    // Signature is valid. Process webhook payload safely.
} else {
    // Signature verification failed! Reject request.
}

Multi-lingual Taxonomy (Categories & Tags)

Tags and Categories tables support fully translatable translations, avoiding database clutter. Administrators manage hierarchy categories using the category panel resource, defining parent relationships and display sort order values.

Article Layout Templates

Define custom templates inside the `templates/` views. The package searches for overrides in your application path `resources/views/vendor/filament-cms-pro/templates/[layout_template].blade.php` before loading default templates.

Headless REST API

Get Posts List

HTTP
GET /api/v1/posts?category=travel&tag=nepal&sort=trending HTTP/1.1
Host: your-cms-domain.com
X-Locale: en
Accept: application/json

Response JSON Payload

JSON
{
  "current_page": 1,
  "data": [
    {
      "id": 12,
      "featured_image": "posts/travel-guide.jpg",
      "layout_template": "standard",
      "trending_score": 12.45,
      "status": "published",
      "published_at": "2026-06-07T10:00:00Z",
      "translations": [
        {
          "locale": "en",
          "title": "Stunning Trekking Routes in Nepal",
          "slug": "stunning-trekking-routes-in-nepal",
          "content": [
            {
              "type": "paragraph",
              "data": {
                "text": "Detailed visual trekking outlines."
              }
            }
          ]
        }
      ]
    }
  ]
}