el-schneider/statamic-mux-id
Statamic addon for Mux video: upload or select assets, store Mux playback IDs, and render videos in your site. Simplifies Mux integration with fieldtypes and Antlers tags.
Architecture fit. This is a Statamic addon (Laravel-based CMS), not a framework-agnostic Laravel package. It follows Statamic conventions: Composer package, service provider, an asset-container blueprint fieldtype, and Mux as the external SaaS for ingest, transcode, and delivery — with results stored as metadata on the Statamic asset record. Fit is conditional: strong if the organization already runs Statamic for content and Mux for video; poor if the stack is plain Laravel/Blade with no Statamic, or if video already sits with an incumbent (Cloudflare Stream, Vimeo, S3+transcode).
Integration feasibility. Low-to-moderate effort for a Statamic team: composer require, publish config, supply Mux credentials, attach the Mux field to asset container blueprint(s), configure a queue, and expose a webhook endpoint. No migration is mentioned, which lowers adoption risk but also means there is no first-class relational model to query or report on — metadata rides on Statamic's asset record. Requires outbound access to the Mux API and inbound webhooks; dev environments need real credentials or a stub.
Technical risk.
status: errored plus Mux error details on asset metadata. Templates, GraphQL/REST consumers, and editors must handle it, and the notes describe no recovery path.failed_jobs triage discipline.Key questions.
status: errored and re-drive the asset — UI action, artisan command, or manual metadata edit?Stack fit. Statamic 4/5 on Laravel 10/11, PHP 8.1+, Composer, with database/Redis/SQS queues. Transcode and delivery load sit with Mux's CDN, not the app tier. Not appropriate for non-Statamic Laravel applications — treat this as a CMS-bound integration, not a general media library.
Migration path. Greenfield only. There is no evidenced route for backfilling existing videos into Mux through this package; legacy references need a bespoke script and template rewrites. Because state lives in asset metadata rather than a dedicated table, expect template, search index, and any API-exposure configuration changes.
Compatibility. Install pinned to the exact 0.1.1 tag and commit composer.lock; check PHP/Statamic constraints against the target project first. The metadata addition is additive but is a de facto schema change — audit Antlers/Blade partials, GraphQL queries, and CP asset listings for assumptions that status is always absent or healthy. Revealer wrapping may break custom CP styling or test selectors.
Sequencing.
sync — the configuration v0.1.1 makes safe. Force a 4xx (bad token) and confirm status: errored is recorded instead of a hard upload failure.Maintenance. Small code footprint, but a pre-1.0 dependency on an external SaaS with its own API versioning. Budget for version pinning, changelog review on every patch, and periodic re-testing of the error path. Two surfaces need ongoing ownership: Mux credential rotation and drift in Statamic blueprint configuration.
Support. Expect a small or single-maintainer addon at this maturity; check issue response times and whether releases are tagged and tested. The escape hatch is a fork — the surface is small enough to be feasible — but assign explicit internal ownership so the integration does not become orphaned. First-line support needs the errored-asset runbook, not just API documentation.
Scaling. Transcoding and delivery scale with Mux; the app only issues API calls and writes metadata. Watch Mux API rate limits and, more significantly, queue throughput: bulk uploads behind a sync driver serialize and can time out CP requests. With async queues, size worker concurrency and align backoff with the new rethrow-for-retry behavior. Metadata writes on the asset record add write amplification during bulk imports.
Failure modes.
status: errored — a silent editorial failure rather than a loud one. Uploads succeed while video never plays. Monitor errored assets explicitly; do not depend on users reporting it.failed_jobs — assets then sit in limbo with no errored status at all.Ramp-up. A Statamic-fluent developer is productive in under a day; editors need roughly 30 minutes plus a clear "video won't play" path. Plan ~1–2 engineering days for the spike and staging validation, and an ops half-day for the runbook, monitoring, and alerting before production cutover.
How can I help you explore Laravel packages today?