Skip to content

Capell Core

This page is generated from package source documentation in the Capell foundation repository and the checked-in manifest. Source documentation is not distribution status. Before running a Composer command, verify that the exact package and compatible 1.x release are available through public Packagist or the authenticated marketplace account.

FieldValue
Composer packagecapell-app/core
Package slugcore
Product groupCapell Foundation
Tierfree
Bundlefoundation
Runtime contextsadmin, frontend, console
Capell version^1.0
Catalogue rolecore
Release channelReleased
Source repositorycapell-app/capell
Source pathpackages/core
Docs sourcepackages/core/docs
Manifestcapell.json

Capell Core architectural cutaway showing Site, Language, Page, URL, Settings, Theme, and Extension layers

Latest Release Latest Version on Packagist Tests PHP Quality PHP Laravel Compatibility Documentation

capell-app/core is the platform package for Capell CMS. It owns the shared content model, package registry, install and upgrade orchestration, settings infrastructure, and extension contracts used by Admin, Frontend, Installer, Marketplace, and first-party add-ons.

Use this package when a Laravel app needs Capell’s domain records and extension API. It is not an editor UI or public renderer by itself.

Core owns:

  • sites, domains, languages, pages, page URLs, layouts, themes, blueprints, media records, redirects, package state, and upgrade log records
  • install, upgrade, rollback, package cache, component cache, doctor, faker, and maker commands
  • package manifest validation, package registry state, settings schemas, subscribers, render blocks, maker registration, and model-level contracts
  • database migrations and settings migrations for the shared Capell schema

Core does not own:

  • the Filament admin panel, resources, dashboard surfaces, and editor workflow; that is capell-app/admin
  • public request handling and public HTML rendering; that is capell-app/frontend
  • browser installer routes and setup removal; that is capell-app/installer
  • catalogue browsing, account linking, and install authorization; that is capell-app/marketplace
  • visual layout building, frontend authoring, generated HTML cache, SEO, blog, navigation, or migration/recovery features; those live in add-on packages

For a guided full-stack setup, require capell-app/installer and run php artisan capell:install — it brings in core and composer-requires the admin/frontend packages you choose. To use core on its own (headless or manual setups):

Terminal window
composer require capell-app/core
php artisan capell:install

capell:install coordinates the foundation install flow. On an existing Capell app, use:

Terminal window
php artisan capell:upgrade
php artisan capell:doctor

Use php artisan list capell in the host app to confirm the exact command set available after Composer discovery.

  • Provider: Capell\Core\Providers\CapellServiceProvider
  • Config: config/capell.php, config/redirects.php
  • Main models: Page, PageUrl, Site, SiteDomain, Language, Layout, Theme, Blueprint, Type, Media, CapellExtension, UpgradeLogEntry
  • Main commands: capell:install, capell:upgrade, capell:rollback, capell:doctor, capell:package-cache, capell:package-cache:clear, capell:publish-migrations, capell:delete-migrations, capell:publish-components, capell:make-*
  • Test case support: Capell\Core\Testing\ExtensionTestHarness

Type remains present for compatibility while the admin surface is moving toward Blueprint naming. New docs and UI copy should prefer Blueprint unless they are documenting a compatibility API that still uses type terminology.

Use these extension points instead of patching first-party models or providers:

NeedExtension point
Register a page subject typeCapellCore::registerPageType(new PageTypeData(...))
Register package settingsSettingsSchemaRegistry::register()
Register renderable definitionsRenderableRegistry::register()
Subscribe to lifecycle eventsSubscriberManager::subscribe()
Register cache dependenciesCacheInvalidationRegistry::registerDependency()
Register Tailwind source/import metadataTailwindAssetsRegistry::registerSource() / registerImport()
Create package files from project patternscapell:make-* maker commands

When adding a Core migration, also append it to src/Concerns/HasMigrations.php; otherwise package installs can miss the migration.

Core is schema-owning. It creates the tables used by most Capell packages, including page, site, language, layout, theme, blueprint, media, extension, redirect, and upgrade state.

Settings migrations are part of package installation and must be idempotent. Wrap new settings migrations in existence checks so upgrades and fresh installs behave the same way.

Core records are used by public rendering and admin workflows, so avoid adding admin-only assumptions to models, casts, or public serialization paths.

From the split repository root, with development dependencies installed, run the smallest relevant check first:

Terminal window
vendor/bin/pest tests

For shared contract changes, also run the package boundary and manifest tests:

Terminal window
vendor/bin/pest tests/Arch tests/Unit/Manifest
SurfaceSupported versions
PHP^8.4 with ext-intl
Laravel^13.0
Filament support^5.7.6
Symfony filesystem/process^7.2 or ^8.0
Symfony HTML sanitizer^7.0 or ^8.0
RuntimePHP-FPM; Laravel Octane with Swoole, RoadRunner, or FrankenPHP

Each Capell 1.x minor receives security fixes for 24 months from its release date, and the latest 1.x minor is always supported. Upgrade all installed Capell foundation packages together to the same supported release before requesting a fix. See the Capell security policy for vulnerability reporting.

Support covers the dependency ranges above. When an upstream PHP, Laravel, Filament, or Symfony release reaches its own end of life earlier, upgrading that dependency may be required to receive a safe fix.

  • Missing package surfaces usually mean Composer discovery or the Capell package cache is stale. Run composer dump-autoload, then php artisan capell:package-cache:clear.
  • New migrations that work in tests but not on install are usually missing from HasMigrations::getMigrations().
  • Missing default page records or Blueprint warnings should be checked with php artisan capell:doctor before changing seed or setup code.
  • Do not document moved features as Core behavior. Publishing Studio, generated HTML cache, site discovery, frontend authoring, SEO, blog, navigation, and Migration Assistant workflows are package-owned.

Package development and coordinated verification happen in the capell-app/capell monorepo. Split package repositories are release mirrors; use docs.capell.app for cross-package guidance. See the contribution guide, security policy, and licence.

PageCovers
Core overviewCore responsibilities and the package docs index.
Page managementPages, URLs, types, and publishing state.
Content managementShared content records and ownership boundaries.
Extending CapellCore contracts and extension surfaces.
CacheShared cache helpers and invalidation behavior.
Multi-site and multi-lingualSites, domains, languages, and localized URLs.
Relationship diagnosticsDebug missing active site domains for page URL rendering.
Subscriber managerLifecycle subscription registration.
Static-site extensionsStatic export integration points.
Authoring upgrade stepsUpgrading packages that integrate authoring behavior.
Install debuggingCommon install and setup failures.
Agent schemaPublic agent declarations, reads, limits, and audit meaning.

The complete integration and extension guides are published at docs.capell.app.