jeffersongoncalves/filament-documentation
Installation:
composer require jeffersongoncalves/filament-documentation
Publish the config and migrations (if needed):
php artisan vendor:publish --provider="JeffersonGoncalves\FilamentDocumentation\FilamentDocumentationServiceProvider" --tag="config"
Configure Documentation Directory:
Update config/filament-documentation.php to point to your Markdown files directory (default: resources/docs/):
'directory' => resource_path('docs'),
First Use Case:
Create a Markdown file (e.g., resources/docs/getting-started.md) with frontmatter:
---
title: Getting Started
order: 1
---
# Welcome to the Admin Panel
This is your first documentation page.
Register the plugin in app/Providers/Filament/AdminPanelProvider.php:
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
\JeffersonGoncalves\FilamentDocumentation\FilamentDocumentationPlugin::make(),
]);
}
Access the documentation via the Filament sidebar (default: "Documentation" tab).
Documentation as Part of Admin Panel:
.md file (e.g., resources/docs/resources/users.md).Versioned Documentation:
resources/docs/v1/, resources/docs/v2/).directory config dynamically per environment or tenant:
config(['filament-documentation.directory' => resource_path("docs/v{$version}")]);
Dynamic Sidebar Grouping:
---
title: "API"
order: 2
path: "/api"
---
resources/docs/api/auth.md, resources/docs/api/models.md).Code Snippets with Syntax Highlighting:
```php
public function mount()
{
FilamentDocumentation::register();
}
highlight.js integration.Localization:
resources/docs/en/, resources/docs/es/, etc.locale config or extend the plugin to auto-detect the Filament panel’s locale.Link to Documentation from Resources/Pages: Add a custom action or button in Filament resources/pages to open relevant docs:
use JeffersonGoncalves\FilamentDocumentation\Facades\FilamentDocumentation;
FilamentDocumentation::open('resources/users');
Embed Docs in Modals:
Use the plugin’s render() method to display documentation in a modal:
use JeffersonGoncalves\FilamentDocumentation\Widgets\DocumentationWidget;
DocumentationWidget::make('getting-started')
->modalHeading('Documentation')
->modalWidth('75%');
Customize Rendering:
Extend the plugin’s DocumentationRenderer to add custom Markdown processors or post-render hooks:
FilamentDocumentation::extend(function (Renderer $renderer) {
$renderer->addExtension(new CustomMarkdownExtension());
});
Caching Issues:
php artisan filament:cache:clear
php artisan cache:clear
'cache' => env('APP_ENV') !== 'local',
Frontmatter Parsing Errors:
--- on new lines).php artisan filament-documentation:parse resources/docs/example.md
Directory Permissions:
directory is readable by Laravel:
chmod -R 755 resources/docs/
Highlight.js Conflicts:
highlight.js scripts. Exclude the plugin’s script in your layout:
@filamentScripts
@vite(['resources/js/app.js', 'resources/js/filament-documentation.js'])
Log Parsing Errors:
Enable debug mode in config/filament-documentation.php:
'debug' => true,
Check logs for frontmatter or file parsing issues.
Verify File Structure:
The plugin scans directories recursively. Ensure files are not hidden (e.g., .hidden.md) or excluded via .gitignore.
Check for Plugin Registration:
Confirm the plugin is registered in AdminPanelProvider and the panel is rebuilt:
php artisan filament:panel rebuild
Custom Frontmatter Fields:
Extend the DocumentationModel to support additional frontmatter keys (e.g., icon, tags):
FilamentDocumentation::extend(function (DocumentationModel $model) {
$model->fillable = ['icon', 'tags'];
});
Dynamic Documentation Loading:
Fetch Markdown from an external API or database by implementing a custom DocumentationProvider:
FilamentDocumentation::provider(new ApiDocumentationProvider());
Search Functionality: Integrate with Laravel Scout or Algolia to add search to the documentation sidebar:
use JeffersonGoncalves\FilamentDocumentation\Documentation;
Documentation::search('laravel')->get();
Dark Mode Support: Override the plugin’s CSS to ensure compatibility with Filament’s dark mode:
.filament-dark .filament-documentation {
--filament-documentation-bg: #1a1a1a;
}
Access Control: Restrict documentation access by user roles or permissions:
FilamentDocumentation::middleware([
\Filament\Panel::class,
\JeffersonGoncalves\FilamentDocumentation\Middleware\Authorize::class,
]);
How can I help you explore Laravel packages today?