PHPackages                             aimeos/pagible-pulse - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. aimeos/pagible-pulse

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

aimeos/pagible-pulse
====================

Pagible CMS - Laravel Pulse metrics

09↓50%PHP

Since Jul 24Pushed 1mo agoCompare

[ Source](https://github.com/aimeos/pagible-pulse)[ Packagist](https://packagist.org/packages/aimeos/pagible-pulse)[ RSS](/packages/aimeos-pagible-pulse/feed)WikiDiscussions master Synced 2w ago

READMEChangelogDependenciesVersions (1)Used By (0)

Pagible Pulse
=============

[](#pagible-pulse)

Laravel Pulse dashboard integration for [Pagible CMS](https://pagible.com) with CMS metrics for GraphQL and MCP content operations, authentication, AI, search, contact forms, page requests, and JSON:API requests.

This package is an optional add-on for the [Pagible CMS monorepo](https://github.com/aimeos/pagible). Install it separately when Laravel Pulse metrics are needed.

Requirements
------------

[](#requirements)

- PHP 8.2 or newer
- A working Pagible CMS installation (`aimeos/pagible-core`)
- [Laravel Pulse](https://laravel.com/docs/pulse) 1.7 or newer (installed automatically as a dependency)

Setup
-----

[](#setup)

Setting up the dashboard is a two-step process: first prepare Laravel Pulse itself, then install the Pagible Pulse cards on top of it.

### 1. Set up Laravel Pulse

[](#1-set-up-laravel-pulse)

Pulse is pulled in automatically as a dependency of this package, but its storage still needs to be prepared. Run its migrations to create the Pulse tables:

```
php artisan migrate
```

Optionally publish the Pulse config to tune its recorders, storage, and ingest driver:

```
php artisan vendor:publish --provider="Laravel\Pulse\PulseServiceProvider"
```

Pulse works out of the box using the default database storage. For higher-traffic sites, configure a Redis ingest and run a Pulse worker as described in the [Laravel Pulse documentation](https://laravel.com/docs/pulse):

```
php artisan pulse:work
```

Pulse can be switched off entirely with `PULSE_ENABLED=false` (or `pulse.enabled` in the config). When disabled, the CMS recorders stay inactive.

### 2. Install the Pagible Pulse package

[](#2-install-the-pagible-pulse-package)

Require the package via Composer:

```
composer require aimeos/pagible-pulse
```

The service provider is registered automatically through Laravel package discovery. Then run the install command to publish the CMS dashboard and card views:

```
php artisan cms:install:pulse
```

This publishes:

Publish TagTargetDescription`cms-pulse-dashboard``resources/views/vendor/pulse/dashboard.blade.php`Pulse dashboard containing the CMS cards`cms-pulse-views``resources/views/vendor/cms-pulse`Shared Blade view rendering the CMS Pulse cardsYou can publish the assets individually at any time:

```
php artisan vendor:publish --tag=cms-pulse-dashboard
php artisan vendor:publish --tag=cms-pulse-views
```

### 3. Grant dashboard access

[](#3-grant-dashboard-access)

The Pulse dashboard is protected by the `viewPulse` gate. This package defines a default gate that requires the authenticated user to hold the `pulse:view` CMS permission **and** have access to the current tenant.

Grant the permission through the user's `cmsperms` column, either via the `admin` role (which includes all permissions) or by adding `pulse:view` explicitly:

```
$user->cmsperms = ['admin'];          // full access, includes pulse:view
// or
$user->cmsperms = ['editor', 'pulse:view'];
```

Applications that need different access rules can define their own `viewPulse` gate **before** this provider boots; the package only installs its default gate when no custom one exists.

### 4. Open the dashboard

[](#4-open-the-dashboard)

Visit the Pulse dashboard in the browser (`/pulse` by default) while signed in as a user with `pulse:view` permission. The CMS cards appear once matching activity has been recorded.

How metrics are collected
-------------------------

[](#how-metrics-are-collected)

The CMS recorders are registered automatically whenever Laravel Pulse is installed and enabled. They hook into the observability events that Pagible CMS emits for content, authentication, AI, search, contact, page-request, and JSON:API actions, so **no additional configuration is required** — you do not need to enable the `cms.watch` log channel for Pulse. Events fire as soon as the recorders are listening.

Because metrics are only captured going forward, the cards stay empty until new CMS activity occurs after installation.

Metrics
-------

[](#metrics)

CardMetricsGraphQLContent operations (pages, elements, files) and authentication performed through the GraphQL admin API, keyed by operation (`page:save`, `auth:login`, …)MCPContent operations (pages, elements, files) performed through the MCP server, keyed by operation (`page:save`, `file:publish`, …)CLIContent operations performed through the CLI and importers, keyed by operation (`page:save`, `file:publish`, …)AIAI mutations, providers, models, latency, and success rateSearchSearch queries, result counts, latency, domains, and languagesContactContact form submissions, IP addresses, and latencyRequestsPage views by path, domain, HTTP status, and latencyJSON:APIJSON:API actions, includes, domains, and latencyContent activity is bucketed per transport in a `cms_` Pulse type (`cms_graphql`, `cms_mcp`, `cms_cli`, …), so a card can be added for any custom source by pointing its `type` at that bucket.

### Configuring the cards

[](#configuring-the-cards)

Every card is fully defined in `config/cms/pulse.php` under the `cards` key (publish the CMS config with `php artisan vendor:publish --tag=cms-config`). Reorder the entries to change the dashboard layout, edit an entry to change a card, remove an entry to hide a card, or add an entry to show a new one. A card only appears when the classes listed in its `events` all exist, so cards for packages that are not installed stay hidden even when left in the list.

```
'cards' => [
    'graphql' => [
        'title' => 'GraphQL',      // card heading
        'type' => 'cms_graphql',   // Pulse metric type (without tenant suffix)
        'group' => 'action',       // key field the rows are grouped by
        'aggregates' => ['count', 'sum'],
        'details' => ['domain', 'mime'],
        'events' => ['Aimeos\\Cms\\Events\\Authed'],
    ],

    'mysource' => [                // declare a card for any custom bucket
        'title' => 'My source',
        'type' => 'cms_mysource',
        'aggregates' => ['count', 'sum'],
        'details' => ['domain', 'mime'],
    ],
],
```

Commands
--------

[](#commands)

### cms:install:pulse

[](#cmsinstallpulse)

Installs the Pagible Pulse package.

```
php artisan cms:install:pulse
```

Publishes the CMS Pulse dashboard and shared card view. If Laravel Pulse is not installed, the command warns that the CMS Pulse cards will remain inactive.

License
-------

[](#license)

MIT

###  Health Score

21

—

LowBetter than 17% of packages

Maintenance60

Regular maintenance activity

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/ccdc84033584516c77fb6aa7f85dc7048f2fbcd08867fc6abf115d094bab5eef?d=identicon)[aimeos](/maintainers/aimeos)

---

Top Contributors

[![aimeos](https://avatars.githubusercontent.com/u/8647429?v=4)](https://github.com/aimeos "aimeos (4 commits)")

### Embed Badge

![Health badge](/badges/aimeos-pagible-pulse/health.svg)

```
[![Health](https://phpackages.com/badges/aimeos-pagible-pulse/health.svg)](https://phpackages.com/packages/aimeos-pagible-pulse)
```

###  Alternatives

[bruli/php-git-hooks

Git hooks for PHP projects.

674372.7k5](/packages/bruli-php-git-hooks)[clickstorm/go-maps-ext

Google Maps Extension. Simply insert a google map Version 3 without jQuery, calculate a route, images for markers, style maps, KML, categories, responsive and many more.

24174.6k3](/packages/clickstorm-go-maps-ext)[stilliard/blmreader

BLM file format reader (for use with rightmove files)

2451.9k](/packages/stilliard-blmreader)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
