laravel-islands-filemanager maintained by aaix
A file manager as one Laravel Islands page: folder tree, list and thumbnail views, notes and comments, previews, keyboard shortcuts, folder uploads and full-text search — including Office files and scanned documents.
Requirements
- PHP 8.3+, Laravel 12 or 13, a queue worker
aaix/laravel-islands,aaix/laravel-islands-datagrid,aaix/laravel-islands-search- PHP
zipand Imagick, the poppler tools; optionallytesseractfor scans
apt-get install poppler-utils tesseract-ocr tesseract-ocr-deu tesseract-ocr-eng
Installation
composer require aaix/laravel-islands-filemanager
php artisan vendor:publish --tag=filemanager-migrations
php artisan vendor:publish --tag=filemanager-config
php artisan migrate
// vite.config.js
import islandsFilemanager from './vendor/aaix/laravel-islands-filemanager/vite.js';
export default defineConfig({
plugins: [/* … */ islandsFilemanager()],
});
// resources/js/app.js
import { filemanagerIslands } from '@aaix/laravel-islands-filemanager';
startVueIslands({ ...islands, ...filemanagerIslands });
@source '../../vendor/aaix/laravel-islands-filemanager/resources/js/**/*';
FILEMANAGER_HASH_SALT=a-long-random-string # never change once files are stored
Setup
Allow access through a gate (set filemanager.ability to null to let every signed-in user in):
Gate::define('filemanager.access', fn (User $user): bool => $user->hasRole('office'));
Place the page inside your layout — it answers under /files and renders filemanager.page.view
with $island and $islandProps:
{{-- resources/views/files.blade.php, config: 'page' => ['view' => 'files'] --}}
<x-layouts.app :title="$title">
<x-island :name="$island" :props="$islandProps" />
</x-layouts.app>
Optionally add the sources to your Laravel Islands Search endpoint:
IslandsSearch::route('search', [FileSearchSource::class, FileContentSearchSource::class]);
Route prefix, middleware, storage disk, OCR languages and more live in config/filemanager.php.
License
The MIT License (MIT). See LICENSE for more information.