jeffersongoncalves / filament-documentation
A Filament plugin to add markdown-based documentation to your admin panel.
Installs: 8
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 0
Forks: 0
pkg:composer/jeffersongoncalves/filament-documentation
Requires
- php: ^8.2
- filament/filament: ^5.0
- league/commonmark: ^2.4
- spatie/laravel-package-tools: ^1.16
- spatie/yaml-front-matter: ^2.0
Requires (Dev)
- larastan/larastan: ^3.9
- laravel/pint: ^1.27
- orchestra/testbench: ^10.0|^11.0
- pestphp/pest: ^2.0|^3.0
README
A Filament plugin to add markdown-based documentation directly inside your admin panel. Inspired by nova-documentation.
Features
- Read
.mdfiles from a configurable directory (resources/docs/) - Parse YAML frontmatter for title, order, and custom path
- Render Markdown with GitHub Flavored Markdown support
- Syntax highlighting via highlight.js with copy-to-clipboard
- Dynamic sidebar with nested directory support (collapsible groups)
- Heading permalinks for deep linking
- Relative
.mdlinks auto-converted to panel routes - Light and dark mode support
- Authorization control via policies
- Configurable cache for parsed content
- Artisan install command (
php artisan docs:install)
Version Compatibility
| Branch | Filament | Laravel | PHP | Livewire |
|---|---|---|---|---|
| 1.x | 3.x | 10+ | 8.1+ | 3.x |
| 2.x | 4.x | 11+ | 8.2+ | 3.x |
| 3.x | 5.x | 12+ | 8.2+ | 4.x |
Installation
composer require jeffersongoncalves/filament-documentation
Optionally, publish the config and example docs:
php artisan docs:install
Or publish individually:
php artisan vendor:publish --tag=filament-documentation-config php artisan vendor:publish --tag=filament-documentation-docs
Setup
Register the plugin in your PanelProvider:
use JeffersonGoncalves\FilamentDocumentation\FilamentDocumentationPlugin; public function panel(Panel $panel): Panel { return $panel ->plugins([ FilamentDocumentationPlugin::make() ->slug('docs') ->navigationLabel('Documentation') ->navigationIcon('heroicon-o-book-open') ->navigationGroup('Help') ->navigationSort(99) ->withAuthorization(false), ]); }
Writing Documentation
Place your .md files in resources/docs/ (configurable via config/filament-documentation.php).
Frontmatter
Each file supports optional YAML frontmatter:
--- title: "Getting Started" path: home order: 1 ---
| Key | Description |
|---|---|
title |
Page title (overrides first H1) |
path |
Custom URL slug |
order |
Sort order in sidebar |
Nested Directories
Subdirectories become collapsible groups in the sidebar:
resources/docs/
├── home.md
├── installation.md
├── configuration.md
└── advanced/
├── overview.md
├── authorization.md
└── customization.md
Relative Links
Link between docs using relative .md paths — they are automatically converted to panel routes:
- [Installation](installation.md) - [Advanced](advanced/overview.md)
Configuration
// config/filament-documentation.php return [ 'title' => env('DOCS_TITLE', 'Documentation'), 'docs_path' => resource_path('docs'), 'home' => 'home.md', 'cache_minutes' => env('DOCS_CACHE', 10), // 0 to disable 'login_route' => null, ];
Plugin Options
| Method | Default | Description |
|---|---|---|
slug() |
'docs' |
URL path: /admin/docs |
navigationLabel() |
'Documentation' |
Sidebar label |
navigationIcon() |
heroicon-o-book-open |
Sidebar icon |
navigationGroup() |
null |
Sidebar group |
navigationSort() |
99 |
Sort order |
withAuthorization() |
false |
Require viewDocumentation gate |
Authorization
Enable authorization to restrict access:
FilamentDocumentationPlugin::make() ->withAuthorization(true)
Then define a gate:
Gate::define('viewDocumentation', function ($user) { return $user->hasRole('admin'); });
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
Please see SECURITY for details.
License
The MIT License (MIT). Please see License File for more information.