visiosoft/addblock-extension
Visiosoft AddBlock extension for Laravel and the Streams Platform, adding block management to PyroCMS so you can create, organize, and reuse content blocks across pages. A lightweight addon for extending module functionality.
Architecture fit. visiosoft/addblock-extension is not a general-purpose Laravel library — it is a module for the Streams Platform (visiosoft/streams-platform), the Laravel-based CMS layer behind PyroCMS 3.x and OpenClassify. Its purpose is narrow: it exposes a UI affordance ("Add Block") for inserting reusable content blocks into page/module-managed content. Architectural fit is therefore essentially binary: it is a good fit only if the host application is already a Streams Platform app (typically OpenClassify or a Pyro-derived build) and already runs the Pages module. In any conventional Laravel application the package is inert — it registers field types, admin views, and Streams hooks that have no meaning outside that runtime.
Integration feasibility. Installed via Composer plus the Streams extension lifecycle (composer require → php artisan addon:install visiosoft.extension.addblock-extension → php artisan streams:compile). That is a moderate, non-standard integration path compared to service-provider auto-discovery: it mutates the Streams registry, runs migrations, and compiles a cache that must be rebuilt on deploy. Feasible in a day for someone who knows Streams; opaque for anyone who does not. The real gate is version alignment with streams-platform, which is the package's dominant transitive constraint.
Technical risk. High, and mostly signal-driven rather than code-driven:
Key questions.
streams-platform version?composer.json pin — Laravel, PHP, streams-platform? Does that solve against our current lockfile without --ignore-platform-reqs?Stack fit. Assumes Laravel + Streams Platform + the Pages module, PHP 8.x, and the Streams admin asset pipeline. Confirm the app is a Streams distribution (look for streams-platform in composer.json, a core.php/addons manifest, and php artisan streams:* commands). If that check fails, stop — there is no adaptation path.
Migration path. Treat this as a vendored dependency, not a public package:
streams:compile and asset publishing are in the deploy script, not run by hand.Compatibility. Build an explicit matrix of Laravel / PHP / streams-platform / extension version and test the deployment on a staging clone of production data. Pay particular attention to the admin JS bundle — Streams extensions that inject editor UI are the most fragile part across upgrades, and are the most likely cause of a silent regression.
Sequencing. (1) Confirm Streams dependency and business need. (2) Composer resolution and fork decision. (3) Staging install + authoring walkthrough. (4) Content round-trip and deletion semantics test. (5) Production rollout behind an admin-only feature flag so authoring regressions can be disabled without a deploy. Do not sequence this ahead of a platform upgrade; do it in a quiet window, because the compile step can surface unrelated Streams cache issues.
Maintenance. Effectively zero upstream maintenance guarantee. Plan for self-maintenance: an owner, a fork in our VCS, and a documented patch process. Budget is small in absolute terms (this is a thin extension) but the expertise cost — Streams Platform fluency — is the real constraint and is scarce.
Support. No SLA, no vendor contract, no issue-triage expectation on a repo with no stars. Internal escalation only. MIT license means we can fix anything; it does not mean anyone will.
Scaling. Runtime cost is negligible — it renders authoring UI and resolves block content at page render, so it adds nothing meaningful to request latency at typical CMS traffic. The scaling concern is content scaling: if blocks are embedded inline in page bodies, page size grows, full-text search and cache keys get heavier, and cache invalidation granularity worsens (editing one block may invalidate every page that embeds it). Confirm the storage model before assuming horizontal scaling is unaffected.
Failure modes.
streams:compile errors during deploy leave the admin without the extension or, worse, with a stale cache.Ramp-up. Low for an end user (one button in the page editor). Moderate-to-high for an engineer: Streams Platform concepts (addons, extensions, field types, compile lifecycle) are idiosyncratic and thinly documented relative to core Laravel. Assume 2–3 days for a strong Laravel engineer to become productive in this codebase, plus the initial spike. Given the zero-signal risk profile, the honest recommendation is: adopt only if "Add Block" is a genuinely required capability and Streams is already the platform — otherwise satisfy the need with an existing field type or a small in-house extension you control from day one.
How can I help you explore Laravel packages today?