zynqa / filament-confluence
Confluence integration for FilamentPHP
Installs: 13
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/zynqa/filament-confluence
Requires
- php: ^8.2
- calebporzio/sushi: ^2.5
- filament/filament: ^3.2
- guzzlehttp/guzzle: ^7.8
- spatie/laravel-package-tools: ^1.16
- spatie/laravel-settings: ^3.0
Requires (Dev)
- orchestra/testbench: ^9.0
- pestphp/pest: ^2.0
README
A Laravel/Filament package that provides Confluence knowledge base integration. Display Confluence pages directly in your Filament admin panel with user-based access control.
Features
- ✅ Dual API support: Direct Confluence REST API or MCP integration
- ✅ User-based space assignment
- ✅ Admin-curated page sharing with automatic sub-page inclusion
- ✅ Read-only viewing with markdown support
- ✅ No database storage - uses Sushi for virtual Eloquent models
- ✅ Comprehensive caching strategy
- ✅ Filament v3 compatible
Requirements
- PHP 8.2+
- Laravel 11+
- Filament 3.2+
- Spatie Laravel Settings 3.0+
Installation
Step 1: Install the package
composer require zynqa/filament-confluence
Step 2: Publish configuration and migrations
php artisan vendor:publish --tag="filament-confluence-config" php artisan vendor:publish --tag="filament-confluence-migrations"
Step 3: Run migrations
php artisan migrate
Step 4: Add trait to User model
use Zynqa\FilamentConfluence\Models\Concerns\HasConfluenceSpaces; class User extends Authenticatable { use HasConfluenceSpaces; protected $fillable = [ // ... your existing fields 'confluence_space_keys', ]; }
Step 5: Register the plugin
In your AppPanelProvider.php:
use Zynqa\FilamentConfluence\FilamentConfluencePlugin; public function panel(Panel $panel): Panel { return $panel ->plugins([ FilamentConfluencePlugin::make(), ]); }
Configuration
Environment Variables
For Direct API Connection:
CONFLUENCE_CONNECTION=direct CONFLUENCE_URL=https://your-domain.atlassian.net CONFLUENCE_EMAIL=your-email@example.com CONFLUENCE_API_TOKEN=your-api-token CONFLUENCE_AUTH_TYPE=basic CONFLUENCE_CONTENT_FORMAT=markdown
For MCP Connection:
CONFLUENCE_CONNECTION=mcp CONFLUENCE_CLOUD_ID=your-cloud-id CONFLUENCE_CONTENT_FORMAT=markdown
Assigning Spaces to Users
Update your UserResource to include the Confluence space assignment field:
Forms\Components\Select::make('confluence_space_keys') ->label('Confluence Spaces') ->multiple() ->options(function () { $service = app(\Zynqa\FilamentConfluence\Services\ConfluenceService::class); $spaces = $service->getSpaces(); return collect($spaces)->mapWithKeys(fn($s) => [ $s['key'] => $s['key'] . ' - ' . $s['name'] ]); }) ->searchable(),
Admin-Shared Pages
Configure shared pages in Settings > Confluence:
- Add page IDs that should be visible to all users
- All sub-pages (descendants) are automatically included
Usage
Once configured, users will see a "Knowledge Base" menu item in Filament where they can:
- Browse pages from their assigned Confluence spaces
- View admin-shared pages and their descendants
- Read content in markdown format
- Click "Open in Confluence" to edit in Confluence
Architecture
This package uses:
- Sushi: Virtual Eloquent models without database storage
- Dual API Support: Choose between direct Confluence API or MCP delegation
- Per-User Caching: Each user gets their own cached page set
- Space-Based Access: Users see only pages from their assigned spaces
Security
- Read-only access - all editing happens in Confluence
- User-scoped data - each user only sees their assigned spaces
- Admin-controlled shared pages
- Comprehensive error logging
License
MIT
Credits
- Built for FilamentPHP
- Uses Spatie Laravel Settings
- Powered by Sushi by Caleb Porzio