Skip to content

Installation

FilamentCraft is distributed as a private Composer package from our own registry. Your license email contains the credentials; you add the repository and HTTP basic credentials, then composer require as usual.

Install

Add the private repository and your credentials — the username is the email you purchased with, the password is your license key — then require the package:

bash
composer config repositories.filamentcraft composer https://packages.filamentcraft.dev
composer config http-basic.packages.filamentcraft.dev your@email.com your-license-key
composer require filamentcraft/filamentcraft
php artisan filamentcraft:install

Where do the credentials live?

composer config http-basic.… writes to auth.json next to your composer.json. Keep auth.json out of version control and add the same credentials to your CI / deploy environment (COMPOSER_AUTH env var or a pre-install composer config step).

The install command:

  • publishes the config + migrations and runs them (migrations are behind a confirm prompt),
  • registers editor assets via filament:assets (skip with --no-assets),
  • creates the public storage symlink used by image uploads,
  • syncs registered themes into the database (filamentcraft:sync-themes) — skipped, along with the example seed, if you decline the migration prompt,
  • offers to seed the example site when run interactively (or force it with --example),
  • can wire Laravel Folio storefront pages with --folio (requires composer require laravel/folio first — see Dynamic pages),
  • prints the exact panel provider file to paste the plugin into.

Re-run it any time with --force to overwrite previously published files, and re-run php artisan filament:assets after every package update so the editor bundle stays current.

Using an AI assistant?

The whole API is published as machine-readable docs — point Claude Code, Cursor, or any MCP client at llms-full.txt (or the Context7 index) and it reads the real, current API instead of guessing. Full setup: Using the Docs with AI Tools.

Check the setup any time

Two commands answer "is everything wired correctly?" without clicking through the panel:

bash
php artisan filamentcraft:doctor   # migrations, theme sync, sites, assets, panel wiring
php artisan about                  # version, registered themes/sections, tenancy mode, license state

doctor prints a remediation hint under every failed check, so it's the first thing to run when something looks off after an install or upgrade.

License key

Licensing degrades softly and never blocks — every feature works without a key. The only difference on an unlicensed install is a small "Built with FilamentCraft" link rendered on public pages. Set your key in .env to remove it:

dotenv
FILAMENTCRAFT_LICENSE_KEY=your-license-key

To disable the attribution link without a key in a given environment (for example a review app that doesn't receive secrets), call FilamentCraftPlugin::make()->softLicense(false) or set 'license' => ['soft_degrade' => false] in config/filamentcraft.php.

Start with an example site

To land on a working page right after install, pass --example:

bash
php artisan filamentcraft:install --example

That seeds a studio Theme, a studio-demo Site, and a published home template populated with Hero + Features + Footer sections. Re-running the command is idempotent — the second invocation prints Example site already seeded — skipping. and exits cleanly. (A bare interactive filamentcraft:install offers the same seed as a prompt.)

For a richer first run, filamentcraft:starter provisions a cohesive site — header and footer regions plus a hero, logo cloud, features, stats, testimonials, pricing, and CTA page — in one of four style families. Each family pulls a matching preset (and color scheme) into every section, so the whole site lands on-brand:

--family=StyleBest for
modern (default)Modern SaaS — clean, confident, product-ledsoftware, apps, and SaaS
editorialEditorial Studio — warm and craftedstudios, agencies, and portfolios
boldBold Startup — high-energy and punchylaunches and fast-moving startups
elegantElegant Premium — quiet and refinedpremium services and boutique brands
bash
php artisan filamentcraft:starter                      # configured family (modern)
php artisan filamentcraft:starter --family=editorial   # or bold, elegant
php artisan filamentcraft:starter --owner=1 --name="Acme"

The default family comes from filamentcraft.starter.family (FILAMENTCRAFT_STARTER_FAMILY in .env).

Register the plugin

Register the plugin on the panel that should host the editor:

php
use Filament\Panel;
use FilamentCraft\FilamentCraftPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->id('admin')
        ->plugin(FilamentCraftPlugin::make());
}

That's it for the minimal install. The panel now has one new sidebar entry — Website builder. Once the resolved site has a homepage, that entry opens the editor on it directly; until then it lands on a dashboard listing the site's pages. The editor itself is a record-scoped page (filamentcraft/editor/{template}), so it never appears in the sidebar on its own.

Show the Sites, Pages & Designs resources

The dashboard is deliberately the only sidebar entry by default: most apps want their users editing pages, not administering the tables behind them. When you do want the raw Filament resources — for an internal admin, or while debugging — turn them on:

php
return $panel->plugin(
    FilamentCraftPlugin::make()
        ->showAdvancedResources(),
);

That adds Stores, Pages, and Designs to the sidebar. Their records stay reachable and tenant-scoped either way; this flag only controls whether they get navigation entries.

Rename the sidebar navigation

Override the sidebar group header and each navigation item directly on the plugin. The defaults are Content (group), Website builder (dashboard entry), Stores, Pages, and Designs. Every setter is optional and falls back to the bundled label when omitted; pass null to keep a default.

The last three only render once showAdvancedResources() is on.

php
return $panel->plugin(
    FilamentCraftPlugin::make()
        ->navigationGroup('Website')          // default: "Content"
        ->navigationLabel('FilamentCraft')     // default: "Website builder"
        ->sitesNavigationLabel('Sites')        // default: "Stores"
        ->templatesNavigationLabel('Templates') // default: "Pages"
        ->themesNavigationLabel('Themes'),      // default: "Designs"
);

For multi-locale apps, publish the translations (php artisan vendor:publish --tag=filamentcraft-translations) and edit the navigation.* keys instead — plus dashboard.navigation_label for the dashboard entry, which lives outside that group.

Gate who can open the builder

By default every user who can reach the panel can open the builder. To restrict it — behind a plan, a licence, or a Gate ability — pass a closure to canAccessUsing(). It receives the authenticated user (or null) and returns a boolean:

php
return $panel->plugin(
    FilamentCraftPlugin::make()
        ->canAccessUsing(fn (?Authenticatable $user): bool => $user?->can('use-website-builder') ?? false),
);

When the closure returns false, the builder disappears from navigation and its routes return 403 — the dashboard, the editor, and the advanced resources are all gated by the same check, so there's no URL a blocked user can hit directly. Omit the call (or return true) to leave the builder open to everyone on the panel.

The Templates resource list
The Templates resource — create a Theme + Site, then add a Template.

Build your first page

The editor workspace
The editor: icon rail and section list on the left, live preview filling the rest.
  1. Create a Theme and Site row (via the resources or a seeder).
  2. Add a Template and click Open in Editor.
  3. Add sections from the catalog, edit their settings, and watch the live preview update.
  4. Save to write a draft revision, then Publish to promote it.

Next steps

  • Styling & Tailwind — wire FilamentCraft into your panel's Tailwind build.
  • Sections — the built-in catalog and writing your own.
  • The Editor — topbar actions, devices, focus mode, undo/redo.