afea/filament-cms-starter

Meta package for the Afea Filament CMS package ecosystem: aggregates every module and ships an interactive Laravel Prompts installer.

Maintainers

Package info

github.com/AfeaSoftware/filament-cms-starter

pkg:composer/afea/filament-cms-starter

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.1.0 2026-04-21 10:48 UTC

This package is auto-updated.

Last update: 2026-04-21 11:57:25 UTC


README

Meta package that aggregates the entire Afea Filament CMS ecosystem and ships the interactive afea:install orchestrator. No business code of its own — its only job is to make "new agency project" a ten-minute affair.

The ten-minute setup

laravel new acme-site
cd acme-site

# 1. Install Filament itself and create a panel (standard Filament steps)
composer require filament/filament
php artisan filament:install --panels

# 2. Install the Afea CMS starter
composer require afea/filament-cms-starter
php artisan afea:install

The installer walks you through:

  1. Panel provider path — defaults to app/Providers/Filament/AdminPanelProvider.php.
  2. Module selection — checkbox list of every first-party module (all selected by default except positions).
  3. Per-module routing — for modules with public routes (blog, pages, positions) you pick slug, resource or localized and the URL prefix.
  4. Media disk default — prints the AFEA_CMS_MEDIA_DISK env hint.
  5. Cascade install — runs afea:install:core then each module's own installer, passing your routing choices through.
  6. Panel patch — appends ->plugin(...) calls to your panel provider for each selected module, skipping any already present.
  7. Admin user (optional) — cascades to make:filament-user.

Running the command a second time is safe: existing configuration files are kept unless you pass --force, migrations skip already-run entries, and plugin injections are deduplicated by class name.

Non-interactive usage

php artisan afea:install \
  --modules=blog,pages,popup,redirect,faq,testimonials,settings \
  --panel=app/Providers/Filament/AdminPanelProvider.php \
  --no-migrate \
  --force

With --modules the multiselect prompt is skipped. Routing strategies for routed modules still prompt individually — use the per-module installers (afea:install:blog --routing=resource --prefix=blog) if you need the whole thing scripted.

Adding a custom module

The module list is data-driven (ModuleRegistry). If you ship your own afea/filament-something module that follows the same conventions (an afea:install:something command + a ::make()able plugin class), extend the registry in your app's service provider:

use Afea\Cms\Starter\Modules\Module;
use Afea\Cms\Starter\Modules\ModuleRegistry;

// Prepend your module to the registry by wrapping the class — for small
// installs, simply copy-paste the registry and edit. For team-wide reuse,
// contribute an entry upstream.

What the installer will never do

  • Write to .env directly. We print the env keys you should set, but your credentials stay yours.
  • Skip hook or permission checks. The command runs each module's installer through Artisan, so every migration, config publish and notification fires normally.
  • Overwrite an existing plugin registration. Re-running won't duplicate ->plugin(...) lines.

Uninstalling a module later

composer remove afea/filament-popup

Delete the corresponding ->plugin(...) line from your panel provider and run php artisan migrate:rollback --path=… if you want the tables gone. The starter has no "uninstall" subcommand by design — the goal is to leave clean Laravel/Composer primitives in charge.