PHPackages                             componist/core - 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. componist/core

ActiveLibrary

componist/core
==============

....coming soon

064BladeCI failing

Since May 28Pushed 1mo agoCompare

[ Source](https://github.com/componist/core)[ Packagist](https://packagist.org/packages/componist/core)[ RSS](/packages/componist-core/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Componist Core
==============

[](#componist-core)

`componist/core` ist das Basis-Package fuer das Componist-Dashboard in Laravel. Es liefert:

- Dashboard-Routen unter `/dashboard`
- Livewire-Module fuer Menues, Menu-Items, Settings und Notifications
- Blade-Komponenten und Layouts
- Datenbanktabellen inkl. Seeder fuer einen schnellen Start
- Helper-Funktionen zur Einbindung in eigene Views

---

Inhalt
------

[](#inhalt)

- [1) Voraussetzungen](#1-voraussetzungen)
- [2) Installation](#2-installation)
- [3) Publish-Tags im Ueberblick](#3-publish-tags-im-ueberblick)
- [4) Datenbank: Migrationen und Seeder](#4-datenbank-migrationen-und-seeder)
- [5) Routing und Module](#5-routing-und-module)
- [6) Berechtigungen und Sicherheit](#6-berechtigungen-und-sicherheit)
- [7) Konfiguration](#7-konfiguration)
- [8) Blade- und Livewire-Komponenten](#8-blade--und-livewire-komponenten)
- [9) Helper-Funktionen mit Beispielen](#9-helper-funktionen-mit-beispielen)
- [10) Benachrichtigungen erstellen](#10-benachrichtigungen-erstellen)
- [11) Assets (Vite, JS, CSS)](#11-assets-vite-js-css)
- [12) Typische Integrations-Workflows](#12-typische-integrations-workflows)
- [13) Troubleshooting](#13-troubleshooting)
- [14) Lizenz](#14-lizenz)

---

1) Voraussetzungen
------------------

[](#1-voraussetzungen)

- PHP `8.2+` (im Monorepo aktuell mit Laravel 12 genutzt)
- Laravel `12.x`
- Livewire `4.x`
- Node.js LTS (fuer Vite/Tailwind-Assets)

---

2) Installation
---------------

[](#2-installation)

### Monorepo (dieses Projekt)

[](#monorepo-dieses-projekt)

Das Package ist bereits im Monorepo vorhanden. In der Regel reichen:

```
composer dump-autoload
php artisan package:discover
```

### Externes Projekt

[](#externes-projekt)

Wenn du `componist/core` ausserhalb des Monorepos nutzt:

```
composer require componist/core
```

Hinweis: Je nach Setup brauchst du ggf. einen VCS- oder Path-Repository-Eintrag in der Host-`composer.json`.

---

3) Publish-Tags im Ueberblick
-----------------------------

[](#3-publish-tags-im-ueberblick)

Der `CoreServiceProvider` stellt mehrere Tags bereit.

### Vollinstallation (empfohlen fuer schnellen Start)

[](#vollinstallation-empfohlen-fuer-schnellen-start)

```
php artisan vendor:publish --tag=componist.core.install
```

Veroeffentlicht:

- CSS/JS nach `resources/css` und `resources/js`
- `config/markdownx.php`
- `config/componist.php`
- `resources/views/dashboard.blade.php`
- `tailwind.config.js`, `vite.config.js`, `package.json` in die Projekt-Root

> Wichtig: Dieser Tag kann vorhandene Build-Dateien in der Root ueberschreiben.

### Weitere Tags

[](#weitere-tags)

```
# Blade-Views + View-Komponenten-Klassen
php artisan vendor:publish --tag=core.publishes

# Core Components (Views)
php artisan vendor:publish --tag=core.components

# Error-Pages
php artisan vendor:publish --tag=core.pages.errors

# Dashboard-Layout als anpassbare App-Kopie
php artisan vendor:publish --tag=core.page.dashboard
```

---

4) Datenbank: Migrationen und Seeder
------------------------------------

[](#4-datenbank-migrationen-und-seeder)

### Migrationen

[](#migrationen)

Das Package laedt Migrationen automatisch (`loadMigrationsFrom`).

```
php artisan migrate
```

Relevante Tabellen:

- `menus`
- `menu_items` (inkl. `icon`, `page_id`, Indizes/FKs je nach Migrationstand)
- `settings`
- `componist_core_notifications`

### Seeder

[](#seeder)

```
php artisan db:seed --class="Componist\Core\Seeders\SettingsTableSeeder"
php artisan db:seed --class="Componist\Core\Seeders\MenuTableSeeder"
php artisan db:seed --class="Componist\Core\Seeders\MenuItemTableSeeder"
```

Der `MenuItemTableSeeder` legt u. a. Standardeintraege fuer folgende Route-Namen an:

- `dashboard.index`
- `componist.core.menus`
- `componist.core.settings`

---

5) Routing und Module
---------------------

[](#5-routing-und-module)

Das Package registriert seine Routen unter:

- Prefix: `/dashboard`
- Name-Prefix: `componist.core.`
- Middleware: `config('componist.auth')` (Standard: `['auth']`)

### Verfuegbare Routen (je nach Modul-Flags)

[](#verfuegbare-routen-je-nach-modul-flags)

- `componist.core.settings` -&gt; `/dashboard/settings`
- `componist.core.menus` -&gt; `/dashboard/menu`
- `componist.core.menu.items` -&gt; `/dashboard/menu/items/{id}`
- `componist.core.notification` -&gt; `/dashboard/notification`
- `componist.core.notification.show` -&gt; `/dashboard/notification/{componistCoreNotification}`

Beispiel zum Deaktivieren eines Bereichs:

```
// config/componist.php
'routes' => [
    'settings' => true,
    'menu' => true,
],
```

---

6) Berechtigungen und Sicherheit
--------------------------------

[](#6-berechtigungen-und-sicherheit)

Standardmaessig wird eine Gate-Ability registriert:

- Ability: `componist.core.manage`
- Default-Logik: erlaubt, wenn `User->is_admin` truthy ist

Mutierende Aktionen in Menue- und Menu-Item-Livewire-Komponenten verwenden:

```
Gate::authorize(config('componist.manage_ability', 'componist.core.manage'));
```

### Eigene Berechtigungsstrategie

[](#eigene-berechtigungsstrategie)

In `config/componist.php`:

```
'manage_ability' => 'admin.panel.manage',
```

Und in deiner App (z. B. in `AppServiceProvider`):

```
use Illuminate\Support\Facades\Gate;

Gate::define('admin.panel.manage', function ($user): bool {
    return $user->hasRole('admin');
});
```

---

7) Konfiguration
----------------

[](#7-konfiguration)

### `config/componist.php`

[](#configcomponistphp)

Wichtige Keys:

- `routes.*`: schaltet Dashboard-Module ein/aus
- `template.*`: Layout-Komponenten
- `dark_mode`: Feature-Flag fuer UI
- `auth`: Middleware-Stack fuer Dashboard-Routen
- `manage_ability`: Gate-Ability fuer Admin-Aktionen
- `select2.allowed_tables`: Allowlist fuer dynamische Select2-Datenquellen

### `config/config.php` (`componistConfig`)

[](#configconfigphp-componistconfig)

Steuert die automatische Registrierung:

- `components`: Blade-Komponenten-Mapping
- `livewire`: Livewire-Komponenten-Mapping
- `prefix`: globaler Prefix fuer Aliasnamen

Prefix-Beispiel:

```
// config/config.php
'prefix' => 'core-',
```

Dann lautet z. B. der Alias:

- Blade: ``
- Livewire: `@livewire('core-menu.index')`

---

8) Blade- und Livewire-Komponenten
----------------------------------

[](#8-blade--und-livewire-komponenten)

### Blade

[](#blade)

```

        Beispiel
        Inhalt im Modal

```

### Livewire

[](#livewire)

```
@livewire('menu.index')
@livewire('menu-item.index', ['id' => $menuId])
@livewire('notification.componist-core-notification-bell')
@livewire('notification.componist-core-notification')
```

---

9) Helper-Funktionen mit Beispielen
-----------------------------------

[](#9-helper-funktionen-mit-beispielen)

Das Package autoloaded `src/Helpers/helpers.php`.

### `setting(string $key)`

[](#settingstring-key)

Liest einen Setting-Wert aus der Tabelle `settings`.

```
$siteTitle = setting('site_title');
```

### `menu(string $menuName, ?string $type = null)`

[](#menustring-menuname-string-type--null)

Liefert ein Menue als HTML oder als Array.

```
{{-- Standard-Template --}}
{!! menu('admin') !!}

{{-- Spezifisches Template --}}
{!! menu('admin', 'vertical') !!}
```

```
// Als Datenstruktur statt HTML
$items = menu('admin', 'array');
```

### `componist_menu_href($menuItem)`

[](#componist_menu_hrefmenuitem)

Resolved den Link fuer einen Menu-Item anhand von Typ und Route-Fallback.

```
$href = componist_menu_href($menuItem);
```

---

10) Benachrichtigungen erstellen
--------------------------------

[](#10-benachrichtigungen-erstellen)

Du kannst programmatisch Eintraege fuer die Core-Notifications anlegen:

```
use Componist\Core\Models\ComponistCoreNotification;

ComponistCoreNotification::CreateMessage(
    auth()->id(), // alternativ E-Mail als String
    'Deployment erfolgreich',
    'Das neue Release wurde erfolgreich ausgerollt.'
);
```

Die Notification-Livewire-Seiten zeigen anschliessend:

- Liste (`/dashboard/notification`)
- Detailansicht inkl. Read-Markierung (`/dashboard/notification/{id}`)

---

11) Assets (Vite, JS, CSS)
--------------------------

[](#11-assets-vite-js-css)

Nach `vendor:publish --tag=componist.core.install` stehen die Assets in deinem Host-Projekt bereit.

### Build

[](#build)

```
npm install
npm run build
```

### Development

[](#development)

```
npm run dev
```

Typische Files:

- `resources/css/dashboard.css`
- `resources/js/dashboard.js`
- `resources/js/tinymce.js`
- ggf. `resources/css/app.css`, `resources/js/app.js`, `resources/js/guest.js`

### Tailwind CSS: Componist-Views scannen

[](#tailwind-css-componist-views-scannen)

Damit Tailwind v4 Utility-Klassen aus Blade-Views aller installierten Componist-Packages erkennt, muss in den veröffentlichten CSS-Dateien folgende `@source`-Zeile enthalten sein:

```
@source '../../vendor/componist/**/resources/views/**/*.blade.php';
```

Diese Zeile ist in den Package-CSS-Dateien (`app.css`, `dashboard.css`, `guest.css`) bereits vorkonfiguriert und wird beim Publish mit übernommen.

---

12) Typische Integrations-Workflows
-----------------------------------

[](#12-typische-integrations-workflows)

### A) Schnellstart fuer internes Admin-Panel

[](#a-schnellstart-fuer-internes-admin-panel)

1. Package installieren/autoloaden
2. `vendor:publish --tag=componist.core.install`
3. `php artisan migrate`
4. Seeder laufen lassen
5. `npm run build`
6. `/dashboard/menu` aufrufen und Menue pflegen

### B) Sicherheit zuerst (empfohlen in produktiven Projekten)

[](#b-sicherheit-zuerst-empfohlen-in-produktiven-projekten)

1. `manage_ability` auf eigene Ability setzen
2. Eigene `Gate::define(...)`-Regel hinterlegen
3. `componist.auth` um zusaetzliche Middleware erweitern (z. B. `verified`, `2fa`)
4. Optional `routes.*` auf benoetigte Module reduzieren

---

13) Troubleshooting
-------------------

[](#13-troubleshooting)

### Menue-Links erscheinen nicht

[](#menue-links-erscheinen-nicht)

- Pruefen, ob `name` oder `view_path` auf existierende Route zeigt.
- Bei `type=route/page` wird auf benannte Routen geprueft.

### Dashboard-Routen geben 403

[](#dashboard-routen-geben-403)

- User hat keine freigegebene Ability (`manage_ability`).
- Gate-Regel und `is_admin`/Rollenmodell pruefen.

### Styles/Skripte fehlen

[](#stylesskripte-fehlen)

- Nach Publish `npm install` + `npm run build` ausfuehren.
- Bei lokaler Entwicklung `npm run dev` starten.

### Ueberschriebene Build-Dateien

[](#ueberschriebene-build-dateien)

- `componist.core.install` schreibt `package.json`, `vite.config.js`, `tailwind.config.js`.
- Vorher bestehende Dateien sichern oder gezielt einzelne Publish-Tags verwenden.

---

14) Lizenz
----------

[](#14-lizenz)

MIT

###  Health Score

22

—

LowBetter than 21% of packages

Maintenance61

Regular maintenance activity

Popularity8

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/d5e1e9db4bf5b8deab7854a0bf9596004deb755d27d2e5e9c64de9ceea564afd?d=identicon)[Componist](/maintainers/Componist)

---

Top Contributors

[![Reinhold-Jesse](https://avatars.githubusercontent.com/u/88349887?v=4)](https://github.com/Reinhold-Jesse "Reinhold-Jesse (34 commits)")

### Embed Badge

![Health badge](/badges/componist-core/health.svg)

```
[![Health](https://phpackages.com/badges/componist-core/health.svg)](https://phpackages.com/packages/componist-core)
```

PHPackages © 2026

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