lancodev / filament-meilisearch
A Filament plugin for managing Meilisearch instances directly from your Filament admin panel.
Requires
- php: ^8.1
- filament/filament: ^4.0|^5.0
- illuminate/console: ^9.0|^10.0|^11.0|^12.0|^13.0
- illuminate/contracts: ^9.0|^10.0|^11.0|^12.0|^13.0
- illuminate/support: ^9.0|^10.0|^11.0|^12.0|^13.0
- meilisearch/meilisearch-php: ^1.6
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.13
- nunomaduro/collision: ^6.0|^7.0|^8.0
- orchestra/testbench: ^7.0|^8.0|^9.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- spatie/laravel-ray: ^1.33
README
Filament Meilisearch Plugin
A comprehensive Filament plugin for managing Meilisearch instances directly from your Filament admin panel. Inspired by meiliweb.
Features
- Dashboard - Overview of your Meilisearch instance health, version, and statistics
- Indexes Management - Create, view, and delete indexes
- Documents Management - Add, search, view, and delete documents
- API Keys Management - Create and manage Meilisearch API keys with granular permissions
- Tasks Monitoring - View and manage background tasks
- Dumps - Create database dumps for backup
- Snapshots - Create point-in-time snapshots
- Index Settings - View and manage index configuration
Requirements
- PHP 8.1+
- Laravel 9.0+ | 10.0+ | 11.0+
- Filament v4.0+|v5.0+
- Meilisearch PHP SDK ^1.6
Installation
composer require lancodev/filament-meilisearch
Publish the configuration file:
php artisan vendor:publish --tag="filament-meilisearch-config"
Configuration
Add your Meilisearch connection details to your .env file:
MEILISEARCH_HOST=http://localhost:7700 MEILISEARCH_KEY=your-master-key
Or publish and edit the config file at config/filament-meilisearch.php:
return [ 'host' => env('MEILISEARCH_HOST', 'http://localhost:7700'), 'key' => env('MEILISEARCH_KEY', null), 'navigation' => [ 'group' => 'Meilisearch', 'icon' => 'heroicon-o-magnifying-glass', 'sort' => 0, ], 'features' => [ 'indexes' => true, 'documents' => true, 'keys' => true, 'tasks' => true, 'dumps' => true, 'snapshots' => true, 'settings' => true, ], ];
Usage
Register the Plugin
In your Filament panel provider (typically app/Providers/Filament/AdminPanelProvider.php):
use Lancodev\FilamentMeilisearch\MeilisearchPlugin; public function panel(Panel $panel): Panel { return $panel // ... ->plugins([ MeilisearchPlugin::make() ->navigationGroup('Search') ->navigationIcon('heroicon-o-magnifying-glass') ->navigationSort(10) ->features([ 'indexes' => true, 'documents' => true, 'keys' => true, 'tasks' => true, 'dumps' => true, 'snapshots' => true, 'settings' => true, ]), ]); }
Customizing Features
You can enable or disable specific features:
MeilisearchPlugin::make() ->features([ 'indexes' => true, 'documents' => true, 'keys' => false, // Disable API keys management 'tasks' => true, 'dumps' => false, // Disable dumps 'snapshots' => false, // Disable snapshots 'settings' => true, ])
Limiting Visible Indexes
By default, all indexes in your Meilisearch instance are shown. You can restrict which indexes are visible in the admin panel:
Via the plugin registration:
MeilisearchPlugin::make() ->allowedIndexes(['products', 'users', 'orders']);
Via the config file:
// config/filament-meilisearch.php 'allowed_indexes' => ['products', 'users', 'orders'],
Via the .env file:
FILAMENT_MEILISEARCH_ALLOWED_INDEXES=products,users,orders
When set, only the listed indexes will appear in the Dashboard, Indexes, and API Keys pages. Set to null (or omit) to show all indexes.
Security
Important: Ensure your Meilisearch instance is properly secured. This plugin requires a Meilisearch API key with appropriate permissions. We recommend:
- Using environment variables for sensitive configuration
- Restricting access to the Meilisearch admin panel to authorized users only
- Using Meilisearch's built-in API key management for granular permissions
- Never committing API keys to version control
License
MIT License. See LICENSE for details.
Credits
Inspired by meiliweb by BenoƮt Polaszek.
