Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Filament V5 Plugin
refineder/filament-crm
cursor
real-time
crm
chat
laravel
whatsapp
livewire
filament
refineder
wasenderapi

Filament v5 plugin development standards and patterns for this CRM package

Install
php artisan boost:add-skill refineder/filament-crm

Save this content to: .cursor/rules/filament-v5-plugin.mdc

# Filament v5 Plugin Development Standards

## Requirements
- PHP 8.2+
- Laravel 11.28+
- Livewire 4.0+
- Tailwind CSS 4.0+
- filament/filament: ^5.0

## Namespaces (Filament 5.x)
- Forms: `Filament\Forms\Components\*` (TextInput, Select, Toggle, etc.)
- Tables: `Filament\Tables\Columns\*` (TextColumn, IconColumn, etc.)
- Filters: `Filament\Tables\Filters\*`
- Actions: `Filament\Actions\*` (EditAction, DeleteAction, BulkActionGroup, etc.)
- Schema: `Filament\Schemas\Schema`
- Plugin Interface: `Filament\Contracts\Plugin`
- Panel: `Filament\Panel`
- Widgets: `Filament\Widgets\Widget`, `Filament\Widgets\StatsOverviewWidget`
- Resources: `Filament\Resources\Resource`
- Pages: `Filament\Resources\Pages\*` (ListRecords, CreateRecord, EditRecord, ViewRecord)

## Resource Structure (v5 Pattern)
```
Resources/
  CustomerResource.php
  Pages/
    CreateCustomer.php
    EditCustomer.php
    ListCustomers.php
  Schemas/
    CustomerForm.php
  Tables/
    CustomersTable.php
```

## Plugin Class Pattern
```php
use Filament\Contracts\Plugin;
use Filament\Panel;

class MyPlugin implements Plugin
{
    public static function make(): static
    {
        return app(static::class);
    }

    public static function get(): static
    {
        return filament(app(static::class)->getId());
    }

    public function getId(): string
    {
        return 'my-plugin';
    }

    public function register(Panel $panel): void
    {
        $panel->resources([...])->pages([...])->widgets([...]);
    }

    public function boot(Panel $panel): void {}
}
```

## Service Provider Pattern
- Extend `Spatie\LaravelPackageTools\PackageServiceProvider`
- Register views, translations, migrations in `configurePackage()`
- Register assets in `packageBooted()`
- Use `$package->name()->hasViews()->hasTranslations()->hasMigrations()->hasRoutes()`

## Code Style
- Use PHP 8.2 features (enums, readonly, named arguments, fibers)
- Follow Laravel Pint formatting
- Use strict types in all files
- Prefix all database tables with `crm_`
- Prefix all config keys with `refineder-crm`

Filament v5 Plugin Development Standards

Requirements

  • PHP 8.2+
  • Laravel 11.28+
  • Livewire 4.0+
  • Tailwind CSS 4.0+
  • filament/filament: ^5.0

Namespaces (Filament 5.x)

  • Forms: Filament\Forms\Components\* (TextInput, Select, Toggle, etc.)
  • Tables: Filament\Tables\Columns\* (TextColumn, IconColumn, etc.)
  • Filters: Filament\Tables\Filters\*
  • Actions: Filament\Actions\* (EditAction, DeleteAction, BulkActionGroup, etc.)
  • Schema: Filament\Schemas\Schema
  • Plugin Interface: Filament\Contracts\Plugin
  • Panel: Filament\Panel
  • Widgets: Filament\Widgets\Widget, Filament\Widgets\StatsOverviewWidget
  • Resources: Filament\Resources\Resource
  • Pages: Filament\Resources\Pages\* (ListRecords, CreateRecord, EditRecord, ViewRecord)

Resource Structure (v5 Pattern)

Resources/
  CustomerResource.php
  Pages/
    CreateCustomer.php
    EditCustomer.php
    ListCustomers.php
  Schemas/
    CustomerForm.php
  Tables/
    CustomersTable.php

Plugin Class Pattern

use Filament\Contracts\Plugin;
use Filament\Panel;

class MyPlugin implements Plugin
{
    public static function make(): static
    {
        return app(static::class);
    }

    public static function get(): static
    {
        return filament(app(static::class)->getId());
    }

    public function getId(): string
    {
        return 'my-plugin';
    }

    public function register(Panel $panel): void
    {
        $panel->resources([...])->pages([...])->widgets([...]);
    }

    public function boot(Panel $panel): void {}
}

Service Provider Pattern

  • Extend Spatie\LaravelPackageTools\PackageServiceProvider
  • Register views, translations, migrations in configurePackage()
  • Register assets in packageBooted()
  • Use $package->name()->hasViews()->hasTranslations()->hasMigrations()->hasRoutes()

Code Style

  • Use PHP 8.2 features (enums, readonly, named arguments, fibers)
  • Follow Laravel Pint formatting
  • Use strict types in all files
  • Prefix all database tables with crm_
  • Prefix all config keys with refineder-crm
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums