PHPackages                             whilesmart/eloquent-brands - 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. [Database &amp; ORM](/categories/database)
4. /
5. whilesmart/eloquent-brands

ActiveLibrary[Database &amp; ORM](/categories/database)

whilesmart/eloquent-brands
==========================

Polymorphic branding (name, logo, contact details) attachable to any model for Laravel applications.

1.0.0(1mo ago)084[1 issues](https://github.com/whilesmartphp/eloquent-brands/issues)MITPHPPHP ^8.2

Since Jun 11Pushed 1mo agoCompare

[ Source](https://github.com/whilesmartphp/eloquent-brands)[ Packagist](https://packagist.org/packages/whilesmart/eloquent-brands)[ RSS](/packages/whilesmart-eloquent-brands/feed)WikiDiscussions dev Synced 1w ago

READMEChangelog (1)Dependencies (6)Versions (4)Used By (0)

whilesmart/eloquent-brands
==========================

[](#whilesmarteloquent-brands)

A polymorphic **brand kit** for Laravel: attach branding (name, contact details, colors, and image assets like logos / emblems / favicons in any format) to any model, scoped to an owner through [`whilesmart/eloquent-owner-access`](https://github.com/whilesmartphp/eloquent-owner-access). Image assets are managed by [`whilesmart/eloquent-files`](https://github.com/whilesmartphp/eloquent-files).

A workspace, organisation, or store can hold **many brands** (one marked as the default used on documents); each brand carries many assets, each tagged with a role.

Install
-------

[](#install)

```
composer require whilesmart/eloquent-brands
php artisan migrate

```

Routes register automatically under the `api` prefix with `auth:sanctum`. Set `BRANDS_REGISTER_ROUTES=false` to mount them yourself.

Attaching a brand to a model
----------------------------

[](#attaching-a-brand-to-a-model)

```
use Whilesmart\Brands\Traits\HasBrands;

class Workspace extends Model
{
    use HasBrands;
}

$workspace->brands()->create([
    'owner_type' => Workspace::class,
    'owner_id'   => $workspace->id,
    'name'    => 'Maison Amani SARL',
    'email'   => 'billing@amani.africa',
    'phone'   => '+237 690 00 04 12',
    'address' => '12 Market St, Douala',
    'website' => 'https://amani.africa',
    'tax_id'  => 'M029817',
    'is_default' => true,
    'colors'  => [
        ['name' => 'Primary', 'value' => '#0B0D07'],
        ['name' => 'Accent',  'value' => '#2E3B8D'],
    ],
]);

$workspace->brands;          // every brand kit
$workspace->defaultBrand;    // the default brand used on documents
$workspace->defaultBrand->assets; // its image assets (Files)
```

The `owner` morph is the branded entity (a workspace, org, …). An owner can hold many brands; setting `is_default` on one demotes the others automatically.

Assets (logos, emblems, …)
--------------------------

[](#assets-logos-emblems-)

Assets are stored via `eloquent-files` (owned by the brand). Each carries a `role`(`logo`, `logo-dark`, `emblem`, `favicon`, `wordmark`, … — free-form) and an optional `label`, so a brand kit can hold the same mark in several versions/formats.

MethodEndpointNotesGET`/api/brands`List (filter by `owner_*`)POST`/api/brands`CreateGET`/api/brands/{brand}`Show (includes `assets`)PUT`/api/brands/{brand}`UpdateDELETE`/api/brands/{brand}`DeletePOST`/api/brands/{brand}/assets`Upload an asset (`asset` file, `role`, `label`)DELETE`/api/brands/{brand}/assets/{file}`Remove an asset```
$logo = $brand->assetsByRole('logo')->first();
$logo?->url; // public URL of the asset
```

Custom model
------------

[](#custom-model)

The Brand model is swappable. Publish the config and point `brands.model` at your own class (extend the package model to add fields/casts/behaviour):

```
php artisan vendor:publish --tag=brands-config

```

UUID keys
---------

[](#uuid-keys)

Set `BRANDS_UUIDS=true` before migrating for UUID primary keys and uuid morph columns. This assumes the owner model also uses UUID keys.

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance90

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 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.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

46d ago

### Community

Maintainers

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

---

Top Contributors

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

###  Code Quality

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/whilesmart-eloquent-brands/health.svg)

```
[![Health](https://phpackages.com/badges/whilesmart-eloquent-brands/health.svg)](https://phpackages.com/packages/whilesmart-eloquent-brands)
```

###  Alternatives

[leantime/leantime

Open source project management system for non-project managers. Simple like Trello, powerful like Jira. Built with neurodiversity in mind.

10.2k4.0k](/packages/leantime-leantime)[anourvalar/eloquent-serialize

Laravel Query Builder (Eloquent) serialization

11223.5M33](/packages/anourvalar-eloquent-serialize)[statamic-rad-pack/runway

Eloquently manage your database models in Statamic.

135224.7k8](/packages/statamic-rad-pack-runway)[duncanmcclean/statamic-cargo

Comprehensive e-commerce addon for Statamic. Build bespoke e-commerce sites without the complexity.

3518.3k](/packages/duncanmcclean-statamic-cargo)

PHPackages © 2026

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