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

v3.0.4 2026-02-22 03:58 UTC

This package is auto-updated.

Last update: 2026-02-22 04:00:19 UTC


README

Tests PHPStan Fix PHP Code Style Latest Version on Packagist

A Filament plugin to add markdown-based documentation directly inside your admin panel. Inspired by nova-documentation.

Features

  • Read .md files 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 .md links 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.