Search by

aaix / laravel-islands-filemanager

aaix

A file manager for Laravel Islands: folders, list and thumbnail views, notes, comments, previews and full-text search.

Package info

github.com/jonaaix/laravel-islands-filemanager

pkg:composer/aaix/laravel-islands-filemanager

Statistics

Installs: 13

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.5 2026-10-29 22:42 UTC

This package is auto-updated.

Last update: 2026-10-29 22:54:08 UTC


README

Laravel Islands File Manager Logo

Laravel Islands File Manager

A file manager for Laravel Islands: folders, list and thumbnail views, an info column with notes and comments, previews, keyboard shortcuts and full-text search — including Office files and scanned documents.

Latest Version on Packagist Total Downloads

A file manager as one Laravel Islands page: several drives, tabs, folder tree, list and thumbnail views, notes and comments, previews, keyboard shortcuts, copy and paste, a trash, folder uploads and full-text search — including Office files and scanned documents.

Laravel Islands File Manager

Requirements

  • PHP 8.3+, Laravel 12 or 13, a queue worker
  • aaix/laravel-islands, aaix/laravel-islands-datagrid, aaix/laravel-islands-search
  • PHP zip and Imagick, the poppler tools; optionally tesseract for 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]);

Drives are Laravel disks listed under volumes in config/filemanager.php; each appears in the folder tree and may ask for a Gate ability to be seen and another to be changed (read-only otherwise). Copying and moving between drives can be restricted with transfer_ability:

'volumes' => [
    'files' => ['name' => 'Files', 'disk' => 'filemanager'],
    'archive' => ['name' => 'Archive', 'disk' => 's3-archive', 'ability' => 'view-archive', 'write_ability' => 'edit-archive'],
],
'transfer_ability' => null,

By default a drive is virtual: the file manager owns the disk, folders live in the database and files under hashed paths. A drive with 'mode' => 'direct' instead shows an existing directory tree below its root and writes to it directly. Changes made outside are picked up when a folder is opened and by php artisan filemanager:scan (scheduled nightly); files renamed outside keep their notes and comments, recognised by inode or ETag.

Deleted items go to a trash per drive and are deleted for good after trash_days (30, null keeps them until emptied by hand) by the scheduled filemanager:purge-trash.

Thumbnails and extracted text are kept on the same disk in a hidden .laravel-islands-filemanager folder. Route prefix, middleware, OCR languages and more live in the same config file.

License

The MIT License (MIT). See LICENSE for more information.