Core features
title: Core features description: The core infrastructure that came with 1.0.0: modules, permissions, notifications, search, cron, queue, update hooks, backups, audit log and the AACP panel.
The 1.0.0 core was designed as an application core on which modules are written. All of the following arrived with the first stable release.
Module system
A module is defined by a module.json manifest, an installer, capability registrations and contribution declarations. The core recognises a module from that manifest, so its pages, permissions and menu entries do not have to be wired up by hand.
Permissions
Authorisation is role and capability based and plugs into Symfony Voters. Protecting a screen or an action means requiring the matching capability.
Notifications
Three parts: a notification-type registry, a channel abstraction and per-user preferences. A module registers a new type; the user picks the channel they want it on.
Global search
One search surface that modules join by registering a provider. A module offers its content as a provider instead of writing its own search.
Cron and queue
- Cron: jobs are declared with the
#[CpCronJob]attribute. Virtual cron and a real crontab are both supported. - Queue: asynchronous job infrastructure backed by Messenger.
Update hooks
Version-tagged data migrations that run once. A ledger records which ones ran, so repeating an update never runs the same hook twice.
Backups, audit log, performance, cache
Backups, an audit log and performance monitoring. The origin HTML cache keeps rendered public pages.
Multilingual content and interface
Both content and interface are multilingual, and translations are editable from the database.
The AACP administration panel
Users, roles, modules, themes, settings, the security centre and the recovery console in one panel.
cp:doctor
A diagnostics command covering migration state, modules, capabilities, translations, the environment and the security posture.