PHPackages                             tomatophp/filament-cms - 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. [Framework](/categories/framework)
4. /
5. tomatophp/filament-cms

ActiveLibrary[Framework](/categories/framework)

tomatophp/filament-cms
======================

Full CMS System with support of importing integrations and multi meta functions

4.0.0(8mo ago)12012.5k↑626.7%24[4 PRs](https://github.com/tomatophp/filament-cms/pulls)4MITPHPPHP ^8.2|^8.3|^8.4CI passing

Since Jun 14Pushed 1w ago5 watchersCompare

[ Source](https://github.com/tomatophp/filament-cms)[ Packagist](https://packagist.org/packages/tomatophp/filament-cms)[ GitHub Sponsors](https://github.com/fadymondy)[ RSS](/packages/tomatophp-filament-cms/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (18)Versions (39)Used By (4)

[![Screenshot](https://raw.githubusercontent.com/tomatophp/filament-cms/master/arts/fadymondy-tomato-cms.jpg)](https://raw.githubusercontent.com/tomatophp/filament-cms/master/arts/fadymondy-tomato-cms.jpg)

Filament CMS Builder
====================

[](#filament-cms-builder)

[![Latest Stable Version](https://camo.githubusercontent.com/bd71aa591c0f10624666e1169904926552e7059723752620de10c8d3c52ccd2d/68747470733a2f2f706f7365722e707567782e6f72672f746f6d61746f7068702f66696c616d656e742d636d732f76657273696f6e2e737667)](https://packagist.org/packages/tomatophp/filament-cms)[![License](https://camo.githubusercontent.com/ee19c3b93bf1a636ef02f57d0f22dbe40b4944ce33a13793f7b65b6e88671a46/68747470733a2f2f706f7365722e707567782e6f72672f746f6d61746f7068702f66696c616d656e742d636d732f6c6963656e73652e737667)](https://packagist.org/packages/tomatophp/filament-cms)[![Downloads](https://camo.githubusercontent.com/0fcba4d89676f0261d90e64e3be0f236e2b88a358df97131281e8e521d860762/68747470733a2f2f706f7365722e707567782e6f72672f746f6d61746f7068702f66696c616d656e742d636d732f642f746f74616c2e737667)](https://packagist.org/packages/tomatophp/filament-cms)[![Dependabot Updates](https://github.com/tomatophp/filament-cms/actions/workflows/dependabot/dependabot-updates/badge.svg)](https://github.com/tomatophp/filament-cms/actions/workflows/dependabot/dependabot-updates)[![PHP Code Styling](https://github.com/tomatophp/filament-cms/actions/workflows/fix-php-code-styling.yml/badge.svg)](https://github.com/tomatophp/filament-cms/actions/workflows/fix-php-code-styling.yml)[![Tests](https://github.com/tomatophp/filament-cms/actions/workflows/tests.yml/badge.svg?branch=master)](https://github.com/tomatophp/filament-cms/actions/workflows/tests.yml)

Full CMS System with support of importing integrations and multi meta functions

Installation
------------

[](#installation)

Caution

Don't update to v4.0 if you are using v1.0 or less because you will lose some features but you can update and use this features from integrated packages.

```
composer require tomatophp/filament-cms
```

after installing your package, please run this command

```
php artisan filament-cms:install
```

finally register the plugin on `/app/Providers/Filament/AdminPanelProvider.php`

```
->plugin(
    \TomatoPHP\FilamentCms\FilamentCMSPlugin::make()
        ->useCategory()
        ->usePost()
        ->allowExport()
        ->allowImport()
)
```

Screenshots
-----------

[](#screenshots)

[![Posts List](https://raw.githubusercontent.com/tomatophp/filament-cms/master/arts/posts-list.png)](https://raw.githubusercontent.com/tomatophp/filament-cms/master/arts/posts-list.png)[![Posts Create](https://raw.githubusercontent.com/tomatophp/filament-cms/master/arts/create-post.png)](https://raw.githubusercontent.com/tomatophp/filament-cms/master/arts/create-post.png)[![Posts SEO](https://raw.githubusercontent.com/tomatophp/filament-cms/master/arts/post-seo.png)](https://raw.githubusercontent.com/tomatophp/filament-cms/master/arts/post-seo.png)[![Posts View](https://raw.githubusercontent.com/tomatophp/filament-cms/master/arts/view-post.png)](https://raw.githubusercontent.com/tomatophp/filament-cms/master/arts/view-post.png)[![Category List](https://raw.githubusercontent.com/tomatophp/filament-cms/master/arts/category-list.png)](https://raw.githubusercontent.com/tomatophp/filament-cms/master/arts/category-list.png)[![Category Create](https://raw.githubusercontent.com/tomatophp/filament-cms/master/arts/create-category.png)](https://raw.githubusercontent.com/tomatophp/filament-cms/master/arts/create-category.png)

Features
--------

[](#features)

- Content Manager
- Content Comments &amp; Ratings
- Multi Imports Integrations
- Content Import &amp; Export

Add Custom Type to CMS
----------------------

[](#add-custom-type-to-cms)

you can add a custom type to the CMS by using Facade method on your AppServiceProvider `boot()` method

```
use TomatoPHP\FilamentCms\Facades\FilamentCMS;
use TomatoPHP\FilamentCms\Services\Contracts\CmsType;

public function boot()
{
    FilamentCMS::types()->register([
        CmsType::make('building')
            ->label('Buildings')
            ->icon('heroicon-o-home')
            ->color('danger')
    ]);
}
```

Add More Author Types
---------------------

[](#add-more-author-types)

you can add more authors types by using Facade method on your AppServiceProvider `boot()` method

```
use TomatoPHP\FilamentCms\Facades\FilamentCMS;
use TomatoPHP\FilamentCms\Services\Contracts\CmsAuthor;

public function boot()
{
    FilamentCMS::authors()->register([
        CmsAuthor::make('Admin')
            ->model(\App\Models\User::class)
    ]);
}
```

Use Post-Events
---------------

[](#use-post-events)

sometimes you need to add some custom logic to your post like send email or notify user you can use the post events to do this, and the supported events is:

```
\TomatoPHP\FilamentCms\Events\PostCreated::class
\TomatoPHP\FilamentCms\Events\PostUpdated::class
\TomatoPHP\FilamentCms\Events\PostDeleted::class
```

Extend Post Resource
--------------------

[](#extend-post-resource)

The Post resource is built with a modular architecture that allows you to easily extend and customize forms, tables, and infolists by registering custom components.

### Register Custom Form Components

[](#register-custom-form-components)

Add custom form fields to the Post resource form in your `AppServiceProvider` `boot()` method:

```
use TomatoPHP\FilamentCms\Filament\Resources\PostResource\Form\PostForm;
use Filament\Forms\Components\TextInput;

public function boot()
{
    PostForm::register([
        TextInput::make('custom_field')
            ->label('Custom Field')
            ->required(),
    ]);
}
```

### Register Custom Table Columns

[](#register-custom-table-columns)

Add custom columns to the Post resource table:

```
use TomatoPHP\FilamentCms\Filament\Resources\PostResource\Table\PostTable;
use Filament\Tables\Columns\TextColumn;

public function boot()
{
    PostTable::register([
        TextColumn::make('custom_field')
            ->label('Custom Field')
            ->sortable()
            ->searchable(),
    ]);
}
```

### Register Custom Table Actions

[](#register-custom-table-actions)

Add custom row actions to the Post resource table:

```
use TomatoPHP\FilamentCms\Filament\Resources\PostResource\Table\PostActions;
use Filament\Tables\Actions\Action;

public function boot()
{
    PostActions::register([
        Action::make('custom_action')
            ->label('Custom Action')
            ->icon('heroicon-o-bolt')
            ->action(function ($record) {
                // Your custom action logic
            }),
    ]);
}
```

### Register Custom Bulk Actions

[](#register-custom-bulk-actions)

Add custom bulk actions to the Post resource table:

```
use TomatoPHP\FilamentCms\Filament\Resources\PostResource\Table\PostBulkActions;
use Filament\Tables\Actions\BulkAction;

public function boot()
{
    PostBulkActions::register([
        BulkAction::make('custom_bulk_action')
            ->label('Custom Bulk Action')
            ->icon('heroicon-o-bolt')
            ->action(function ($records) {
                // Your custom bulk action logic
            }),
    ]);
}
```

### Register Custom Table Filters

[](#register-custom-table-filters)

Add custom filters to the Post resource table:

```
use TomatoPHP\FilamentCms\Filament\Resources\PostResource\Table\PostFilters;
use Filament\Tables\Filters\Filter;

public function boot()
{
    PostFilters::register([
        Filter::make('custom_filter')
            ->form([
                // Your filter form fields
            ])
            ->query(function ($query, array $data) {
                // Your filter query logic
            }),
    ]);
}
```

### Register Custom InfoList Entries

[](#register-custom-infolist-entries)

Add custom entries to the Post resource infolist (view page):

```
use TomatoPHP\FilamentCms\Filament\Resources\PostResource\InfoList\PostInfoList;
use Filament\Infolists\Components\TextEntry;

public function boot()
{
    PostInfoList::register([
        TextEntry::make('custom_field')
            ->label('Custom Field'),
    ]);
}
```

Extend Category Resource
------------------------

[](#extend-category-resource)

The Category resource follows the same modular architecture pattern as the Post resource.

### Register Custom Form Components

[](#register-custom-form-components-1)

Add custom form fields to the Category resource form:

```
use TomatoPHP\FilamentCms\Filament\Resources\CategoryResource\Form\CategoryForm;
use Filament\Forms\Components\TextInput;

public function boot()
{
    CategoryForm::register([
        TextInput::make('custom_field')
            ->label('Custom Field')
            ->required(),
    ]);
}
```

### Register Custom Table Columns

[](#register-custom-table-columns-1)

Add custom columns to the Category resource table:

```
use TomatoPHP\FilamentCms\Filament\Resources\CategoryResource\Table\CategoryTable;
use Filament\Tables\Columns\TextColumn;

public function boot()
{
    CategoryTable::register([
        TextColumn::make('custom_field')
            ->label('Custom Field')
            ->sortable(),
    ]);
}
```

### Register Custom Table Actions

[](#register-custom-table-actions-1)

Add custom row actions to the Category resource table:

```
use TomatoPHP\FilamentCms\Filament\Resources\CategoryResource\Table\CategoryActions;
use Filament\Tables\Actions\Action;

public function boot()
{
    CategoryActions::register([
        Action::make('custom_action')
            ->label('Custom Action')
            ->icon('heroicon-o-bolt')
            ->action(function ($record) {
                // Your custom action logic
            }),
    ]);
}
```

### Register Custom Bulk Actions

[](#register-custom-bulk-actions-1)

Add custom bulk actions to the Category resource table:

```
use TomatoPHP\FilamentCms\Filament\Resources\CategoryResource\Table\CategoryBulkActions;
use Filament\Tables\Actions\BulkAction;

public function boot()
{
    CategoryBulkActions::register([
        BulkAction::make('custom_bulk_action')
            ->label('Custom Bulk Action')
            ->icon('heroicon-o-bolt')
            ->action(function ($records) {
                // Your custom bulk action logic
            }),
    ]);
}
```

### Register Custom Table Filters

[](#register-custom-table-filters-1)

Add custom filters to the Category resource table:

```
use TomatoPHP\FilamentCms\Filament\Resources\CategoryResource\Table\CategoryFilters;
use Filament\Tables\Filters\Filter;

public function boot()
{
    CategoryFilters::register([
        Filter::make('custom_filter')
            ->form([
                // Your filter form fields
            ])
            ->query(function ($query, array $data) {
                // Your filter query logic
            }),
    ]);
}
```

### Create Custom Modular Components

[](#create-custom-modular-components)

You can also create your own modular components by extending the base classes:

#### Custom Form Component

[](#custom-form-component)

```
namespace App\Filament\Components\Post;

use TomatoPHP\FilamentCms\Filament\Resources\PostResource\Form\Component;
use Filament\Forms\Components\TextInput;

class CustomFieldComponent extends Component
{
    public static function make(): \Filament\Forms\Components\Field | \Filament\Schemas\Components\Component
    {
        return TextInput::make('custom_field')
            ->label('Custom Field')
            ->required();
    }
}
```

Then register it:

```
use TomatoPHP\FilamentCms\Filament\Resources\PostResource\Form\PostForm;
use App\Filament\Components\Post\CustomFieldComponent;

public function boot()
{
    PostForm::register([
        CustomFieldComponent::make(),
    ]);
}
```

#### Custom Table Column

[](#custom-table-column)

```
namespace App\Filament\Columns\Post;

use TomatoPHP\FilamentCms\Filament\Resources\PostResource\Table\Column;
use Filament\Tables\Columns\TextColumn;

class CustomColumn extends Column
{
    public static function make(): \Filament\Tables\Columns\Column
    {
        return TextColumn::make('custom_field')
            ->label('Custom Field')
            ->sortable()
            ->searchable();
    }
}
```

Then register it:

```
use TomatoPHP\FilamentCms\Filament\Resources\PostResource\Table\PostTable;
use App\Filament\Columns\Post\CustomColumn;

public function boot()
{
    PostTable::register([
        CustomColumn::make(),
    ]);
}
```

#### Custom InfoList Entry

[](#custom-infolist-entry)

```
namespace App\Filament\Entries\Post;

use TomatoPHP\FilamentCms\Filament\Resources\PostResource\InfoList\Entry;
use Filament\Infolists\Components\TextEntry;

class CustomEntry extends Entry
{
    public static function make(): \Filament\Infolists\Components\Entry
    {
        return TextEntry::make('custom_field')
            ->label('Custom Field');
    }
}
```

Then register it:

```
use TomatoPHP\FilamentCms\Filament\Resources\PostResource\InfoList\PostInfoList;
use App\Filament\Entries\Post\CustomEntry;

public function boot()
{
    PostInfoList::register([
        CustomEntry::make(),
    ]);
}
```

Integrate more Import Actions
-----------------------------

[](#integrate-more-import-actions)

you can integrate more import actions by using the `FilamentCMS::registerImportAction()` method on your AppServiceProvider `boot()` method like this

```
use TomatoPHP\FilamentCms\Facade\FilamentCMS;
use Filament\Actions\Action;

public function boot()
{
      FilamentCMS::registerImportAction(Action::make('import'));
}
```

Publish Assets
--------------

[](#publish-assets)

you can publish a config file by use this command

```
php artisan vendor:publish --tag="filament-cms-config"
```

you can publish a view file by using this command

```
php artisan vendor:publish --tag="filament-cms-views"
```

you can publish a language file by using this command

```
php artisan vendor:publish --tag="filament-cms-lang"
```

you can publish the migration file by using this command

```
php artisan vendor:publish --tag="filament-cms-migrations"
```

Testing
-------

[](#testing)

if you like to run `PEST` testing just use this command

```
composer test
```

Code Style
----------

[](#code-style)

if you like to fix the code style just use this command

```
composer format
```

PHPStan
-------

[](#phpstan)

if you like to check the code by `PHPStan` just use this command

```
composer analyse
```

Other Filament Packages
-----------------------

[](#other-filament-packages)

Check out our [Awesome TomatoPHP](https://github.com/tomatophp/awesome)

###  Health Score

58

—

FairBetter than 98% of packages

Maintenance80

Actively maintained with recent releases

Popularity43

Moderate usage in the ecosystem

Community27

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor1

Top contributor holds 81.9% 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 ~15 days

Recently: every ~91 days

Total

33

Last Release

268d ago

Major Versions

v1.0.31 → 4.0.02025-10-09

PHP version history (2 changes)v1.0.0PHP ^8.1|^8.2

4.0.0PHP ^8.2|^8.3|^8.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/2147eb2fca7ab5f0124d0fafd88ba2d2a5dfa3a0036fb8872d1084b7cba29366?d=identicon)[fadymondy](/maintainers/fadymondy)

---

Top Contributors

[![fadymondy](https://avatars.githubusercontent.com/u/11937812?v=4)](https://github.com/fadymondy "fadymondy (59 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (4 commits)")[![megoxv](https://avatars.githubusercontent.com/u/87904671?v=4)](https://github.com/megoxv "megoxv (2 commits)")[![bhargavraviya](https://avatars.githubusercontent.com/u/46953122?v=4)](https://github.com/bhargavraviya "bhargavraviya (2 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (2 commits)")[![webdanko](https://avatars.githubusercontent.com/u/8128641?v=4)](https://github.com/webdanko "webdanko (1 commits)")[![goozkan](https://avatars.githubusercontent.com/u/58654441?v=4)](https://github.com/goozkan "goozkan (1 commits)")[![iammuttaqi](https://avatars.githubusercontent.com/u/44245907?v=4)](https://github.com/iammuttaqi "iammuttaqi (1 commits)")

---

Tags

blogcmscontent-management-systemfilamentphp-pluginwebsite-builderphplaravelcmspagesblogservicesfilamentphptomatophppage builder

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/tomatophp-filament-cms/health.svg)

```
[![Health](https://phpackages.com/badges/tomatophp-filament-cms/health.svg)](https://phpackages.com/packages/tomatophp-filament-cms)
```

###  Alternatives

[statikbe/laravel-filament-flexible-content-blocks

The Laravel Filament Flexible Content Blocks package helps you to easily create content in Filament for any model, with predefined or custom blocks, and foreach block an extendable Blade view component.

17625.6k4](/packages/statikbe-laravel-filament-flexible-content-blocks)[codewithdennis/larament

Larament is a time-saving starter kit to quickly launch Laravel 13.x projects. It includes FilamentPHP 5.x pre-installed and configured, along with additional tools and features to streamline your development workflow.

3991.8k](/packages/codewithdennis-larament)[tomatophp/filament-types

Manage any type on your app in Database with easy to use Resource for FilamentPHP

5719.5k8](/packages/tomatophp-filament-types)[tomatophp/filament-ecommerce

Build your own ecommerce store with FilamentPHP with the Power of Tomato CMS Builder

984.5k1](/packages/tomatophp-filament-ecommerce)

PHPackages © 2026

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