angkor/laravel-categories
A Laravel package for managing hierarchical categories and attaching them to Eloquent models. It offers nested category trees, polymorphic relationships, ordering, and helpers for querying or organizing categorized content, with migrations and configuration included out of the box.
categorizable pivot lets products, articles, docs, and media share a single category tree (or separate trees via type scoping). This is the decision that most affects IA, search relevance, and admin UX later.lft/rgt) make ancestor/descendant queries cheap, which directly enables breadcrumbs, category landing pages, "browse by parent," and subtree-scoped filtering. If those are on the roadmap, this is a supporting argument; if not, the complexity isn't earned.Consider it when:
lft/rgt across subtrees).Look elsewhere when:
angkor/laravel-categories as a code snapshot, not a dependency. Evaluate upstream rinvex/laravel-categories first, and if that's stale, use kalnoy/nestedset directly plus your own thin categorization layer — the category package is mostly glue over it.composer.json constraints before it becomes a platform upgrade blocker.To executives (one paragraph): Category structure is a quiet but real lever on discovery, SEO, and merchandising — it determines how users browse, how landing pages rank, and whether reporting has a consistent dimension. This package would let us stand up polymorphic, hierarchical, multilingual categories in days instead of weeks. The caveat is that the specific fork has no adoption and no maintenance community, so I'd frame it as buying a reference implementation, not a vendor: a short technical spike, pin the code, and confirm we're comfortable owning it — or fall back to the upstream library or a thin in-house layer. Either way, the decision I need is to fund the taxonomy model now, before content volume makes it expensive.
To engineering (bullets):
categorizable pivot, Nested Sets for ancestor/descendant queries, Sluggable, Translatable — all standard, low-surprise components.kalnoy/nestedset ourselves. All three are defensible; drifting without choosing is not.Decision request: Approve the spike and a written build-vs-buy call before the next content-modeling milestone, so taxonomy doesn't get hardcoded into an admin screen we then have to unwind.
How can I help you explore Laravel packages today?