taba / crm
A reusable CRM package for Laravel.
Requires
- php: ^8.2
- althinect/filament-spatie-roles-permissions: ^2.3
- amidesfahani/filament-tinyeditor: *
- asosick/filament-layout-manager: 1.0
- awcodes/filament-curator: ^3.3
- awcodes/filament-gravatar: ^2.0
- awcodes/filament-tiptap-editor: ^3.5
- bezhansalleh/filament-exceptions: ^2.0
- bezhansalleh/filament-google-analytics: ^2.1
- bezhansalleh/filament-language-switch: ^3.1
- bezhansalleh/filament-shield: ^3.3
- blade-ui-kit/blade-heroicons: ^2.2
- blade-ui-kit/blade-icons: ^1.8
- croustibat/filament-jobs-monitor: ^2.4.0
- diglactic/laravel-breadcrumbs: ^10.0
- diogogpinto/filament-auth-ui-enhancer: ^1.0
- filament/filament: ^3.2.50
- filament/spatie-laravel-translatable-plugin: *
- google-gemini-php/client: ^2.3
- guava/filament-icon-picker: ^2.3
- guzzlehttp/guzzle: ^7.9
- hasnayeen/themes: ^3.0
- illuminate/support: ^10.0 || ^11.0 || ^12.0
- jaocero/radio-deck: ^1.4
- jeffgreco13/filament-breezy: ^2.2
- laravel/sanctum: ^4.0
- laravel/tinker: ^2.9
- livewire/livewire: ^3.3
- pboivin/filament-peek: ^2.2
- romanzipp/laravel-seo: ^2.6
- sinnbeck/markdom: ^2.0
- spatie/browsershot: ^5.0
- spatie/image: ^3.8
- spatie/laravel-export: ^1.2
- spatie/laravel-sitemap: ^7.3
- swisnl/filament-backgrounds: ^1.1
- symfony/ux-cropperjs: ^2.25
- z3d0x/filament-logger: ^0.8
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^11.0
- dev-main
- v2.0.11
- v2.0.10
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.2.9
- v1.2.8
- v1.2.7
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.14
- v1.1.13
- v1.1.12
- v1.1.11
- v1.1.10
- v1.1.9
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.19
- v1.0.17
- v1.0.16
- v1.0.15
- v1.0.14
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-001-api-angular-integration
- dev-full
- dev-manage-roles
- dev-package
This package is auto-updated.
Last update: 2026-04-01 15:41:57 UTC
README
Taba CRM Package for Laravel
A complete, "plug-and-play" CRM panel for Laravel, powered by Filament.
Taba CRM is a complete, reusable package that provides a full-featured CRM panel. It includes resources for managing posts, categories, and users, and comes pre-configured with essential plugins for a rich user experience.
✨ Features
- Resource Management: Pre-built Filament resources for Posts, Categories, and Users.
- Plugin Ecosystem: Integrated with popular plugins like Breezy (Profiles), Curator (Media), and Peek (Previews).
- Simple Installation: Get up and running with a single custom Artisan command.
- Customizable: Publishable assets (config, views, etc.) allow for easy customization.
📋 Prerequisites
Before you begin, ensure you have a fresh Laravel project with the following configured:
- Laravel 10+
- Filament 3+ installed (
php artisan filament:install --panels) - Database connection set up in your
.envfile.
🚀 Installation
Getting started is simple. Follow these steps to integrate Taba CRM into your project.
Step 1: Require with Composer
First, pull the package into your project.
composer require taba/crm
Step 2: Run the Install Command
Next, run our custom installation command. This smart command handles all the necessary setup for the package and its dependencies, including:
- Detecting and removing Tailwind CSS v4 if present (converting to v3)
- Automatically converting your
app.cssfrom Tailwind v4 to v3 syntax - Removing
@tailwindcss/viteplugin if present - Configuring Tailwind, Vite, and PostCSS
- Publishing assets and running migrations
php artisan crm:install
Note: The install command is smart and non-destructive. It will:
- Detect if you're using Tailwind CSS v4 and automatically convert your files to v3
- Skip modifications if files are already properly configured
- Only add what's needed without breaking existing configurations
Step 3: Register the Plugin
To activate the CRM panel, you need to register the CrmPlugin in your project's AdminPanelProvider.
Open app/Providers/Filament/AdminPanelProvider.php and add the plugin to the plugins() array:
// app/Providers/Filament/AdminPanelProvider.php use Taba\Crm\CrmPlugin; // 👈 Import the plugin at the top public function panel(Panel $panel): Panel { return $panel // ... other panel settings ->plugins([ new CrmPlugin(), // 👈 Add this line ]); }
Step 4: Compile Frontend Assets
Finally, compile your project's frontend assets to ensure the admin panel's styles and scripts are loaded correctly.
npm install npm run dev
And you're done! 🎉 You can now visit /admin and log in to access your new CRM panel.
🏗️ v2 — Component System & Client Panel
Polymorphic Section Components
v2 introduces a polymorphic component system where each section type (Hero, FAQ, Services Grid, etc.) is a self-contained PHP class implementing SectionComponent. Each component defines its own form fields, validation rules, API output, and blade view.
36 built-in components are auto-discovered and ready to use. You can also register custom components.
Creating a Custom Component
use Taba\Crm\Components\Contracts\SectionComponent; use Taba\Crm\Components\Contracts\SectionLayout; use Taba\Crm\Models\PostCategory; class MyComponent implements SectionComponent { public function key(): string { return 'my-component'; } public function label(): array { return ['ar' => 'المكون', 'en' => 'My Component']; } public function icon(): string { return 'heroicon-o-star'; } public function description(): array { return ['ar' => 'وصف المكون', 'en' => 'Component description']; } public function layout(): SectionLayout { return SectionLayout::SINGLE; } public function sectionFields(): array { return [ \Taba\Crm\Components\Fields\FieldFactory::make('text', 'heading', ['ar' => 'العنوان', 'en' => 'Heading']), ]; } public function itemFields(): array { return []; } public function bladeView(): string { return 'components.homepage.my-component'; } public function toApi(PostCategory $section): array { return [ 'id' => $section->id, 'component' => $this->key(), 'order' => $section->order, 'title' => $section->getTranslations('name'), ]; } public function rules(): array { return ['name.ar' => 'required|string']; } public function maxItems(): ?int { return null; } }
Registering Custom Components
Add your component class to config/crm.php:
'extra_components' => [ \App\Components\MyComponent::class, ],
Dual-Panel Architecture
v2 introduces a Client Panel (/dashboard) alongside the existing Admin Panel (/admin):
- Admin Panel (
CrmPlugin): Full CRM management at/admin - Client Panel (
CrmClientPlugin): Simplified content editing at/dashboard
Register both panels in your AdminPanelProvider:
->plugins([ new \Taba\Crm\CrmPlugin(), // Admin panel new \Taba\Crm\CrmClientPlugin(), // Client panel ])
API v2
Component-aware API endpoints alongside the existing v1 API:
| Endpoint | Method | Description |
|---|---|---|
/api/v2/sections |
GET | All active sections with component data |
/api/v2/sections/{id} |
GET | Single section |
/api/v2/settings |
GET | Grouped site settings |
/api/v2/pages/{slug} |
GET | Page by slug |
/api/v2/menus |
GET | All menus |
/api/v2/components |
GET | Available component types |
/api/v2/contact |
POST | Submit contact message |
Authenticated admin endpoints (requires Sanctum token):
| Endpoint | Method | Description |
|---|---|---|
/api/v2/admin/sections |
POST | Create section |
/api/v2/admin/sections/{id} |
PUT | Update section |
/api/v2/admin/sections/{id} |
DELETE | Deactivate section |
🔧 Customization (Optional)
If you need to modify the package's default behavior, you can publish its assets.
php artisan vendor:publish --tag=crm-config php artisan vendor:publish --tag=crm-views php artisan vendor:publish --tag=crm-database
📄 License
The Taba CRM is open-sourced software licensed under the MIT license.