Version

Theme

Introduction

Installation

Filament requires the following to run:

  • PHP 8.2+
  • Laravel v11.28+
  • Tailwind CSS v4.0+

Installation comes in two flavors, depending on whether you want to build an app using our panel builder or use the components within your app’s Blade views:

Installing the panel builder

Install the Filament Panel Builder by running the following commands in your Laravel project directory:

composer require filament/filament

php artisan filament:install --panels

This will create and register a new Laravel service provider called app/Providers/Filament/AdminPanelProvider.php.

TIP

If you get an error when accessing your panel, check that the service provider is registered in bootstrap/providers.php. If it’s not registered, you’ll need to add it manually.

You can create a new user account using the following command:

php artisan make:filament-user

Open /admin in your web browser, sign in, and start building your app!

Installing the individual components

First, install the Filament components you want to use with Composer:

composer require
    filament/tables
    filament/schemas
    filament/forms
    filament/infolists
    filament/actions
    filament/notifications
    filament/widgets

You can install additional packages later in your project without having to repeat these installation steps.

If you only want to use the set of Blade UI components, you’ll need to require filament/support at this stage.

To quickly set up Filament in a new Laravel project, run the following commands to install Livewire, Alpine.js, and Tailwind CSS:

NOTE

These commands will overwrite existing files in your application. Only run them in a new Laravel project!

Run the following command to install the Filament frontend assets:

php artisan filament:install --scaffold

npm install

npm run dev

During scaffolding, if you have the Notifications package installed, Filament will ask if you want to install the required Livewire component into your default layout file. This component is required if you want to send flash notifications to users through Filament.

Run the following command to install the Filament frontend assets:

php artisan filament:install

Installing Tailwind CSS

Run the following command to install Tailwind CSS and its Vite plugin, if you don’t have those installed already:

npm install tailwindcss @tailwindcss/vite --save-dev

Configuring styles

To configure Filament’s styles, you need to import the CSS files for the Filament packages you installed, usually in resources/css/app.css.

Depending on which combination of packages you installed, you can import only the necessary CSS files, to keep your app’s CSS bundle size small:

@import 'tailwindcss';

/* Required by all components */
@import '../../vendor/filament/support/resources/css/index.css';

/* Required by actions and tables */
@import '../../vendor/filament/actions/resources/css/index.css';

/* Required by actions, forms and tables */
@import '../../vendor/filament/forms/resources/css/index.css';

/* Required by actions and infolists */
@import '../../vendor/filament/infolists/resources/css/index.css';

/* Required by notifications */
@import '../../vendor/filament/notifications/resources/css/index.css';

/* Required by actions, infolists, forms, schemas and tables */
@import '../../vendor/filament/schemas/resources/css/index.css';

/* Required by tables */
@import '../../vendor/filament/tables/resources/css/index.css';

/* Required by widgets */
@import '../../vendor/filament/widgets/resources/css/index.css';

@variant dark (&:where(.dark, .dark *));

Configure the Vite plugin

If it isn’t already set up, add the @tailwindcss/vite plugin to your Vite configuration (vite.config,js):

import { defineConfig } from 'vite'
import laravel from 'laravel-vite-plugin'
import tailwindcss from '@tailwindcss/vite'

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
        tailwindcss(),
    ],
})

Compiling assets

Compile your new CSS and JavaScript assets using npm run dev.

Configuring your layout

If you don’t have a Blade layout file yet, create it at resources/views/components/layouts/app.blade.php by running the following command:

php artisan livewire:layout

Add the following code to your new layout file:

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">

        <meta name="application-name" content="{{ config('app.name') }}">
        <meta name="csrf-token" content="{{ csrf_token() }}">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>{{ config('app.name') }}</title>

        <style>
            [x-cloak] {
                display: none !important;
            }
        </style>

        @filamentStyles
        @vite('resources/css/app.css')
    </head>

    <body class="antialiased">
        {{ $slot }}

        @livewire('notifications') {{-- Only required if you wish to send flash notifications --}}

        @filamentScripts
        @vite('resources/js/app.js')
    </body>
</html>

The important parts of this are the @filamentStyles in the <head> of the layout, and the @filamentScripts at the end of the <body>. Make sure to also include your app’s compiled CSS and JavaScript files from Vite!

NOTE

The @livewire('notifications') line is required in the layout only if you have the Notifications package installed and want to send flash notifications to users through Filament.

Edit on GitHub

Still need help? Join our Discord community or open a GitHub discussion

Previous
What is Filament?