Features in Detail
Cmash-Modules
Every capability in Cmash lives in its own package. Add or remove modules without affecting the core — clean separation of concerns at every layer.
Cmash-Core
core is the foundational package of the CMAsh ecosystem. It provides the Filament admin panel plugin, general application settings, the dashboard with analytics widgets, and user/role management. Every other CMAsh package depends on this core module.
Features
- Filament Admin Panel Plugin — registers the CMAsh panel with custom branding, navigation, and login page
- General Settings — configurable application settings via Filament settings page (powered by
spatie/laravel-settings) - Dashboard Widgets — visual analytics for projects, compilations, assets, templates, and latest activity
- User Management — full CRUD for users with UUID primary keys, Spatie roles/permissions, and Filament Shield RBAC
- API Token Management — per-user Sanctum token administration via relation manager
- Custom Login Page — branded authentication page
Cmash-Brand
cmash-brand is the one place to define who you are. The brand management package gives every brand a home. Manage multiple brands at one place - keep things organised: each Brand acts as the root of a visual identity tree, grouping together the Brandkits that carry your colors, fonts, and logos into every compiled template.
Features
- Brand Management — create and manage brand entities with name and metadata
- Filament Admin — full CRUD resource (List, Create, Edit)
- REST API — programmatic brand management for external integrations
- Brandkit Association — brands serve as parent entities for one or more Brandkits
Settings
| Name | Description | Type | Info |
|---|---|---|---|
| Name | Name of Brand | Mandatory | - |
| Slug | Slug of Brand | Mandatory | Unique |
| Description | Short description of Brand | Optional | - |
| Logo | Logo of Brand | Optional | Just a visual representation of the brand |
| Language | Relationship to a Language | Relation | - |
| Active | Status of Brand | Yes, No | - |
| Id | Number of Brand | internal | Unique Id of Brand |
| UUID | Unique Identifier of Brand | internal | Unique Id of Brand |
| CreatedAt | Date of Creation | internal | - |
Cmash-Brandkits
cmash-brandkit provides the brandkit model, which holds the concrete visual identity elements (colors, fonts, logos) for a brand. During Typst compilation, brandkit values are injected as -#let brand- variables, enabling templates to automatically adapt to different brand identities without source code changes.
Features
- Brandkit Definition — configure brand colors, font families, and logo assets per brand
- Template Variable Injection — brandkit values become
#let brand-color-primary,#let brand-font-heading, etc. in Typst templates - Font Path Integration — brand font directories are passed to the Typst compiler via
--font-path - Filament Admin — full CRUD with brand association (List, Create, Edit)
- REST API — programmatic brandkit management
- Multi-Brand Support — a single brand can have multiple brandkits (e.g., light/dark variants)
Settings
| Name | Description | Type | Info |
|---|---|---|---|
| Name | Name of Brand | Mandatory | - |
| Slug | Slug of Brand | Mandatory | Unique |
| Description | Short description of Brand | Optional | - |
| Logo | Logo of Brand | Optional | Just a visual representation of the brand |
| Language | Relationship to a Language | Optional | - |
| Active | Status of Brand | Yes, No | - |
| Id | Number of Brand | internal | Unique Id of Brand |
| UUID | Unique Identifier of Brand | internal | Unique Id of Brand |
| CreatedAt | Date of Creation | internal | - |
| Brand | Relationship to a Brand | Relation | - |
| Brand Colors | Key-Value-Definiton of Brand Colors like "primary-color" - "#68F527" | Multi-Key-Value | Important: Keep the defintions across different brandkits/ brands consistant. |
| Brand Fonts | Key-Value-Definiton of Brand Colors like "primary-font" - "Inter 18pt" | Key-Value | Important: Value must match to the name of the Font from the "Typst Fonts" section |
Cmash-Renderer
cmash-renderer provides the Renderer entity that defines available output formats and their compilation settings. Renderers are assigned to workspaces, controlling which output formats (PDF, PNG, SVG, HTML etc.) are available to end users when downloading their documents. Each renderer can have specific settings like resolution, page size, or quality parameters.
Features
- Output Format Definitions — configure PDF, PNG, and HTML output renderers with custom settings
- Workspace Assignment — renderers are linked to workspaces, controlling available download formats
- Filament Admin — full CRUD resource (List, Create, Edit)
- REST API — programmatic renderer management
- Download Integration — the editor's download manager shows available renderers for the project's workspace
Settings
| Name | Description | Type | Info |
|---|---|---|---|
| Name | Name of Renderer | Mandatory | - |
| Slug | Slug of Brand | Mandatory | Unique |
| Description | Short description of Brand | Optional | @TODO |
| Configuration | Detail Configuration Parameters | Key-Value | @TODO |
| Type | Selection | Selection | Available Options: PDF, Image, HTML @TODO |
| Active | Status of Brand | Yes, No | - |
| Id | Number of Brand | internal | Unique Id of Brand |
| UUID | Unique Identifier of Brand | internal | Unique Id of Brand |
| CreatedAt | Date of Creation | internal | - |
Cmash-Workspaces
cmash-workspace provides the Workspace entity that acts as the tenant boundary in CMAsh. Workspaces group documents, templates, and projects together and control which renderers (output formats), brandkits, forms, and editor themes are available. Each workspace can have its own visual editor theme, sidebar layout preferences, and assigned output format renderers.
Features
- Multi-Tenant Workspaces — isolate documents, templates, and projects by workspace
- Renderer Assignment — control which output formats (PDF, PNG, SVG) are available per workspace
- Brandkit Default — assign a default brandkit for the workspace's documents
- Editor Theme — link a custom CSS editor theme for workspace-specific branding
- Sidebar Layout — configure editor sidebar layout preferences per workspace
- Filament Admin — full CRUD resource (List, Create, Edit)
- REST API — programmatic workspace management
Settings
| Name | Description | Type | Info |
|---|---|---|---|
| Name | Name of Brand | Mandatory | - |
| Slug | Slug of Brand | Mandatory | Unique |
| Description | Short description of Brand | Optional | - |
| Logo | Logo of Brand | Optional | Just a visual representation of the brand |
| Language | Relationship to a Language | Relation | - |
| Active | Status of Brand | Yes, No | - |
| Id | Number of Brand | internal | Unique Id of Brand |
| UUID | Unique Identifier of Brand | internal | Unique Id of Brand |
| CreatedAt | Date of Creation | internal | - |
Cmash-Tags
cmash-tag provides a reusable tagging system for almost any Cmash entity. Tags are managed centrally via the Filament admin panel and can be assigned to Assets, Documents, Templates, Forms, or any future entity type. Tags support color coding, hierarchical parent-child relationships, and type-based scoping.
Features
- Polymorphic Tags — assign tags to any entity via
MorphToManyrelationship and a sharedcmash_taggablespivot table - Tag Types — scope tags by entity type (
asset,document,template,form,general). Tags typedgeneralare available across all entities. - Color Support — each tag has an optional hex color rendered as tinted badges in admin lists
- Tree Hierarchy — optional parent-child relationships (adjacency list with
parent_id). Child tags display with a→prefix; full path shown on hover. Max depth: 5 levels. - Reusable Filament Components — drop-in Select (with inline creation), Filter, and Column for any Filament resource
- REST API — full CRUD + tree endpoint + tag-based entity filtering via
?tags=slug1,slug2 - Datasource Integration — the
_assetsvirtual datasource supports?tags=filtering. Theimage-uploadwidget supportsdatasourceParamsfor tag-filtered asset choosers. - Filament Admin — complete TagResource with CRUD, color picker, parent selector, type filter, and tree visualization
Settings
| Name | Description | Type | Info |
|---|---|---|---|
| Name | Name of Brand | Mandatory | - |
| Slug | Slug of Brand | Mandatory | Unique |
| Description | Short description of Brand | Optional | - |
| Color | Color of Tag | Optional | |
| Type | Selection of taggable entities | Seletion | Options: General, Asset, Document, Template, Form |
| Parent Tag | Selection of Tags to choose as parent Tag | Seletion | |
| Active | Status of Brand | Yes, No | - |
| Id | Number of Brand | internal | Unique Id of Brand |
| UUID | Unique Identifier of Brand | internal | Unique Id of Brand |
| CreatedAt | Date of Creation | internal | - |
| SortOrder | internal | - |