tomatophp/filament-types-module
A Filament module from TomatoPHP for managing reusable types across your application. Create, edit, and organize type records in a clean admin interface, then attach them to any model for flexible categorization and classification. Lightweight, easy to install, and simple to integrate into existing...
What this release is: tomatophp/filament-types-module v1.0.0 is the first tagged release of the Filament UI layer for the TomatoPHP "types" concept — a polymorphic, admin-managed classification system (types/categories/statuses attachable to arbitrary Eloquent models via a typeable style relation), surfaced as a Filament resource and form components. The release note is a bare changelog link with no enumerated features, breaking changes, or compatibility matrix, so everything below is inferred from package lineage and the TomatoPHP module family pattern, not from release documentation.
Architecture fit: Fits naturally into a Filament-v3-style admin panel backed by MySQL/Postgres. The value proposition is real for teams tired of hand-rolling categories, tags, and statuses tables per entity: one shared types table, one admin surface, reused across resources. It is a schema-owning package — it will publish migrations and register a resource, so it wants to be a first-class citizen in the app's data model rather than a passive library. Evaluate whether you accept a package-owned polymorphic table as a core domain concern.
Integration feasibility: Low technical effort, non-trivial governance effort. Expect composer require + php artisan publish/migrate + panel plugin registration. Two integration unknowns dominate:
composer.json requirements before assuming it works with your pinned Filament version.Type model, migrations, and relation traits almost certainly live in a companion package (tomato-php/types or similar). You are adopting at least two packages and a version-locked pair, not one.Technical risk (medium):
Key questions to resolve before adoption:
types table?Typeable contract/interface, and what happens to child records when a type is deleted?Stack fit: Strong if you are already on a Filament admin panel with a conventional relational database and you have at least two or three entities that need classification. Weak if you have exactly one such entity (build it yourself) or if your classification needs are graph-like/hierarchical with heavy querying (the polymorphic model will fight you).
Migration path: Treat this as a greenfield adoption, not a migration — there is no prior version to move from, and no data to convert unless you are replacing bespoke category tables. If you are replacing existing tables, plan a one-way data migration: map legacy category rows into the package's types table, backfill polymorphic pivots, verify counts and orphan handling, then remove the legacy tables only after a full reporting cycle.
Compatibility: Pin exact versions for both this module and its core dependency, and pin Filament. Do not use floating constraints (^1.0 across a family of packages that release in lockstep) until you have observed their tagging discipline over several releases. Add a Composer conflict guard if the app must stay on a Filament major this package does not support.
Sequencing:
Maintenance: Modest but non-zero. Budget for reading diffs on every bump of this package and its core sibling, since changelogs are currently thin. The hidden cost is coupling drift: when Filament ships a major, this module must follow, and that upgrade becomes your upgrade. Assign a named owner.
Support: Community/maintainer-driven, no commercial SLA assumed. Validate that assumption — if classification data sits under regulated or revenue-critical workflows (order statuses, compliance categories), an unsupported admin surface is a business-continuity question, not just a tooling preference. Mitigate with the abstraction seam above so the package is replaceable without rewriting business logic.
Scaling: Fine at typical admin-panel volumes (thousands to low millions of typeable rows) provided indexes exist on the polymorphic columns and you avoid N+1 loading in resource tables. Watch three things as you grow: polymorphic join cost in reporting/BI queries (consider a denormalized read model or materialized view for analytics rather than querying the pivot), the eager-loading discipline of the Filament table, and unbounded type growth if end users can create types freely — add guardrails early.
Failure modes:
Ramp-up: Low for a developer already fluent in Filament — a day to be productive, a week to be confident. Near-zero for the TPM beyond the review gates above. The real ramp-up cost lands on whoever inherits the data model decisions (tenancy, delete semantics, uniqueness), which is why those should be documented at integration time rather than discovered later.
Recommendation: Adopt for internal admin classification where the blast radius of a vendor change is contained, contingent on the spike confirming Filament compatibility and on wrapping all reads behind an application-owned interface. Do not adopt as the system of record for business-critical statuses until the project demonstrates a documented API surface and a stable changelog across at least two or three releases.
How can I help you explore Laravel packages today?