Download the PHP package anselmocossa/filament-launchpad without Composer

On this page you can find all versions of the php package anselmocossa/filament-launchpad. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package filament-launchpad

Filament Launchpad

Latest Version on Packagist Total Downloads

Turn your Filament panel's homepage into a SAP Fiori-style launchpad: Spaces, Pages, Sections and drag-and-drop KPI/shortcut/widget cards, with role-based visibility and a full builder UI — all rendered inside the native Filament shell.

Screenshots

The launchpad home page in light mode: sub-nav tabs, sections and tile cards.

The same home page in dark mode — panel chrome (topbar, sidebar) stays native.

The layout builder: drag cards from the library or existing sections to rearrange the page.

"Edit Home" in the account/user menu — a one-click shortcut into the builder for the home page.

The "Permission" field on a Space/Page/Section/Card, restricting visibility to selected roles.

Managing Spaces, Pages and Sections through the plugin's Resources.

The flat Cards index, also reachable from Filament's global search.

A native Filament widget (StatsOverviewWidget/ChartWidget) rendered in place of a card.

Features

Requirements

Installation

Install the package via Composer:

Run the installer — it publishes the config, then optionally runs the package migrations:

Prefer to do it by hand? The package auto-loads its migrations, so run them normally:

Optionally publish the config file, views or translations:

Register the plugin in your panel provider:

The plugin registers a Launchpad page at the panel root (/), so it becomes the panel home. If your panel also registers the default Dashboard page, remove it (or give it another slug) so the launchpad can own /.

After installing, build the launchpad from the UI: create a Space, a Page inside it, a Section inside that, and Cards inside the Section — or use the drag-and-drop builder (see below) instead of the plain forms.

Usage

Spaces, Pages, Sections and Cards

The launchpad is database-driven by default. The hierarchy is:

Manage all four through the plugin's Filament Resources (Spaces, reachable from the sidebar; Pages, Sections and Cards reachable through relation managers and the "Pages"/"Cards" header buttons), or build a Page visually with the drag-and-drop builder.

KPI sources

A KPI card's live value comes from a KpiSource class that returns a rich KpiResult (value + unit + trend + badge) from a single query. Scaffold one with artisan:

BaseKpiSource derives key() (sales_today) and label() (Sales Today) from the class name (the Kpi suffix is stripped). A KPI Card references the source by its key() from the "Source (Live)" select in the Card form; a source that throws degrades the tile to instead of breaking the page. A Card without a source can still use a "Fixed Value" typed into the form.

Registration. Drop the class under app/Filament/Launchpad and it is auto-discovered — no wiring needed. Register explicitly (which turns auto-discovery off) or scan a custom folder instead:

The legacy closure form still works for quick one-offs and is fully backward-compatible:

Per-panel scoping. Override panels() to limit a source to specific panels (empty = all):

Multi-tenant caching. When cacheFor() is set, values are cached under the source's cacheKey() (defaults to key()). In a multi-tenant app, override it so a cached value never leaks across tenants:

Card library

Card Library presets show up in the builder's "Card Library" panel, ready to be dragged into any Section. Define each as a CardPreset class (auto-discovered under app/Filament/Launchpad) — scaffold one with artisan:

BaseCardPreset derives the key() from the class name (SalesTodayCardsales_today). Registration mirrors KPI sources: auto-discovered by default, or register explicitly / scan a custom folder / opt out with ->cards([...]), ->discoverCards(in:, for:), ->autoDiscoverCards(false).

The legacy array form still works and is merged with the class-based presets (class presets win on key collision):

Presets are reusable — dropping the same preset into several Sections is expected; wire a kpi_source (or edit the value) on the created Card afterwards.

Widgets

Any widget already registered on the panel through widgets() or discoverWidgets() is automatically available in the builder's "Widgets" library. Use widgets() on the plugin only to override the generated label/icon/column span, or to expose a widget that is not registered on the panel:

Dropping a widget from the library creates a Card of type widget that stores only its registered key — the class is resolved from the developer's registration at render time, never read from the database directly.

Scaffold a launchpad-ready widget (a StatsOverviewWidget, no custom view required) with artisan:

Drag-and-drop builder

Open the builder from a Page's Build action (Spaces → a Space → Pages → a Page), or jump straight to the home page's builder via Edit Home in the account/user menu. From there you can:

Global search

Cards are registered as globally searchable (by title and subtitle) through Filament's built-in global search. A result shows which Section/Page/Space the Card lives in, and navigates to whatever the Card's target resolves to.

Configuration

The published config file (config/launchpad.php) exposes branding, accent_color, dark_header, and tile_sizing:

Both modes use auto-fit so empty grid tracks collapse when fewer tiles than columns.

Prefer the fluent plugin API for anything beyond these — LaunchpadPlugin::make()->accentColor('#16a34a')->tileSizing('fixed') — since the config file cannot express closures (live KPIs, widget mappings).

Permissions & Shield

Every Space, Page, Section and Card has a Permission field: the roles allowed to see it. Leave it empty and everyone can see the item — this is the default, unrestricted behaviour, with no dependency required.

Install bezhansalleh/filament-shield (which pulls in spatie/laravel-permission) to turn the field into an active gate:

Once installed:

Without spatie/laravel-permission installed, none of the above applies: the "Permission" field is simply not rendered, and every ability is granted.

Scoping selectable roles

The plugin deliberately does not assume how applications isolate roles. In a multi-tenant application, restrict the roles offered by the Permission field with a query callback on the panel plugin:

The callback applies consistently to Spaces, Pages, Sections and Cards, including the card editor in the drag-and-drop builder. It receives the role model query, so applications can use any suitable isolation rule (tenant, organisation, guard, status, and so on). Leaving it unset preserves the plugin's existing behaviour.

Requiring a permission on every item

By default the Permission field is optional, and an empty field means everyone can see. That is the right default where the launchpad is a convenience layer over a panel people already reached by other means.

It is the wrong default where the launchpad is the way in and every item is meant to belong to somebody. There, saving a space with the field blank quietly publishes it to the whole installation, and nothing on screen says so. Turn the field mandatory:

A closure decides case by case — useful when the same codebase serves a primary panel that authors a shared template and tenant panels where every item has an owner:

The switch reaches Spaces, Pages, Sections and Cards — every item that shares the field — and the placeholder and hint change with it, so the form stops promising that an empty field lets everyone see. Left unset (the default), nothing changes on upgrade.

Hiding the management resources entirely

Policies answer "may this person manage spaces?". They cannot answer "does this installation include Launchpad at all?" — a licence tier, a feature flag, an activated module. Applications that sell their panel in parts can gate the four management resources with a host predicate:

The callback receives the resource's fully-qualified class name, so a single closure can answer for SpaceResource, PageResource, SectionResource and CardResource — or treat them differently.

This predicate runs in addition to the resource's policy, never instead of it: it can hide a resource, never expose one the policy would have refused. Leaving it unset keeps every resource reachable, exactly as before. A predicate that throws degrades to "allowed" rather than taking the panel down.

Localization

Translation catalogs are included for:

Publish and override the translation files with:

Then edit resources/lang/vendor/launchpad/{locale}/launchpad.php — every string in the plugin (labels, buttons, builder copy, model names) is wrapped in __('launchpad::launchpad.*'), so any published locale immediately overrides the package default.

Testing

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Issues and pull requests are welcome. Please run composer lint and composer test before submitting a PR, and keep new strings translatable via launchpad::launchpad.*.

Security Vulnerabilities

If you discover any security-related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.


All versions of filament-launchpad with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
filament/filament Version ^4.0|^5.0
illuminate/contracts Version ^11.0|^12.0|^13.0
illuminate/support Version ^11.0|^12.0|^13.0
laravel/prompts Version ^0.1.24|^0.2|^0.3
spatie/laravel-package-tools Version ^1.16
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package anselmocossa/filament-launchpad contains the following files

Loading the files please wait ...