anomaly/video-field_type
Anomaly Video Field Type adds a video upload and management field to PyroCMS and Laravel Streams, letting you attach and display video files on entries with minimal configuration.
Architecture fit. anomaly/video-field_type is not a general-purpose Laravel package — it is an addon for the Streams Platform (PyroCMS 3.x), written by Anomaly Labs. Its entire value proposition is registering a new field type inside Streams' field-type registry so that content types can declare a video field. It hooks into Streams' FieldType contract, its asset/control-panel conventions, and the addon bootstrapping lifecycle. For a codebase already on PyroCMS 3, this is an idiomatic fit; for any other Laravel application (Nova, Filament, plain Blade, Livewire, Inertia), the architecture does not apply. There is no portable service class you can lift out — the semantics are defined by Streams.
Integration feasibility. Trivial if and only if the host is PyroCMS 3 / Streams. composer require anomaly/video-field_type, then enable the addon and the field type becomes selectable when defining a stream field. The field appears to store a reference/identifier (provider + video ID, or a file reference) rather than raw binary, which keeps the schema light. Outside that environment, integration effort is effectively "fork and rewrite," which is not a reasonable TPM recommendation.
Technical risk. High, driven almost entirely by ecosystem health rather than code quality:
anomaly/files-module for uploads). Those transitive addons must be compatible too.Key questions before committing.
composer.json permit?Stack fit. Only PyroCMS 3.x with the Streams Platform. If the target stack is Laravel + Nova, Filament, or a custom admin, do not adopt this package; instead model video as a JSON column ({provider, id, url, thumbnail}) plus a form component, or use a maintained media library (Spatie Media Library, Plank, etc.). The TPM recommendation should state this plainly — the package is not stack-agnostic.
Migration path. For a PyroCMS host:
composer.json (no floating dev-master), commit the lockfile.video field; exercise create/edit/render/delete.Compatibility. Validate against the exact Streams version in the host. Because dependents are zero, you cannot rely on anyone else's compatibility testing — treat the host's own test suite plus manual CP checks as the gate. Expect to patch composer.json constraints for newer PHP.
Sequencing. (a) Prove the field type on a scratch stream → (b) validate rendering across all front-end templates that will consume it → (c) migrate one content type → (d) migrate the rest → (e) document the fork/ownership plan. Do not sequence this ahead of confirming PyroCMS/Streams version alignment; that is the go/no-go gate.
Maintenance. Effectively self-maintained. With no stars, no dependents, and a quiet upstream, budget for owning a fork: security patches for transitive dependencies, PHP/Laravel constraint bumps, and provider API drift (YouTube/Vimeo embed and metadata endpoints change). This is a recurring cost on the roadmap, not a one-time install.
Support. None beyond public issues, and likely no responses. Internal documentation and a named owner are mandatory. If the host team lacks PyroCMS depth, this becomes a bus-factor risk.
Scaling. Storage scaling is modest if the field stores references (provider ID + thumbnail URL) — cost is negligible. If it uploads, video storage/egress dominates and should be offloaded to object storage + CDN regardless of the field type. Rendering fan-out is cheap; provider API calls at render time are not — cache metadata and thumbnails locally.
Failure modes.
composer update.Ramp-up. Low for a developer already fluent in PyroCMS/Streams addon conventions (hours). Moderate-to-high for a general Laravel team unfamiliar with Streams — the field-type contract, CP asset pipeline, and addon lifecycle are non-obvious and undocumented here. Plan a spike before committing the team to this dependency.
TPM verdict. Low-risk license, high ecosystem risk. Adopt only inside an existing PyroCMS 3 deployment with a named internal owner and a fork plan; reject for any greenfield or non-Pyro Laravel stack, where a small custom field or a maintained media library is the lower-total-cost choice.
How can I help you explore Laravel packages today?