Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Platform Laravel Package

solidworx/platform

SolidWorx Platform provides a modular foundation for Laravel applications, letting you register self-contained modules, organize service providers and configuration, and assemble large platforms from reusable components while keeping bootstrapping and dependencies manageable.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Scope caveat. No prior assessment existed, so this is a cold-start evaluation built from the 0.4.0 release notes alone. Those notes are also truncated mid-list (last PR link is cut off), so treat the change inventory as a floor, not a complete set. Anything below marked as a question is a genuine unknown, not a formality.

Architecture fit — framework mismatch is the headline finding. The request frames this as a Laravel/PHP package. The release evidence says otherwise: Symfony 8+ support line, form types (TextEditorType), KnpMenu-driven menus, Twig-style UI bundles, @symfony/webpack-encore, and a Symfony-flavoured CI/dependency stack (symplify/easy-coding-standard, rector, phpunit-snapshot-assertions). This is a Symfony application platform, not a Laravel package. There is no service provider, no Eloquent integration, and no Laravel-shaped extension point implied anywhere in these notes. If our target is a Laravel codebase, direct integration is not a realistic path; the viable options are (a) consume it as a standalone Symfony service behind HTTP/SSO, (b) cherry-pick isolated PHP components (the disposable-domain list, sanitisation helpers) if they are dependency-light, or (c) correct the framing and evaluate it as a Symfony platform. That decision gates everything else and should be made before any further analysis is commissioned.

Integration feasibility. Assuming a Symfony host (the only path where this fits natively): the package is installable as a bundle/skeleton, but 0.4.0 is a pre-1.0 minor release carrying several genuinely large additions. Three items dominate feasibility:

  • Multi-tenancy (PR #115). Tenant isolation and access control landing in a single PR on a 0.x release is the highest-risk change in the set. Tenant isolation is a security boundary, not a feature. It needs threat modelling, a data-residency review, and an independent test pass — not just acceptance that it merged. It also almost certainly implies schema changes (tenant keys, composite unique indexes, backfill) which are the expensive part of any integration.
  • Disposable email blocking (PR #122, plus ~10 automated blocklist refreshes). The blocklist updates arrive via bot PRs at high frequency. That means list contents drift continuously and are not pinned by the version number. For us this is an unpinned behavioural dependency smuggled inside a normal upgrade — a compliance and support-desk concern (false positives blocking legitimate B2B signups on shared domains), and it must be pinnable or vendorable.
  • Tiptap rich text editor (PR #121) bundled with Tiptap 2→3. The editor surface is new and the underlying JS library takes a major version bump in the same release. Rich text introduces an XSS and content-sanitisation contract that the notes do not address. We need to know whether the backend sanitises stored HTML and with what.

Technical risk. Rated high, driven by four things: (1) pre-1.0 versioning — a 0.3 → 0.4 bump is permitted to break, and the Symfony 8 floor is exactly the kind of change that does; (2) a raised framework floor — "Update supported Symfony version to 8+" is a hard compatibility cliff that silently drops older hosts and raises the effective PHP minimum; (3) major front-end jumps shipped inside a minor release (jQuery 3→4, Tiptap 2→3, webpack-encore 5→6→7, @babel/core 7→8, eslint-webpack-plugin 5→6), any of which can break a host app's asset pipeline; (4) concentration of authorship — the substantive commits are all from one maintainer, with everything else from Dependabot/GitHub Actions bots. The empty PHPStan baseline (PR #126) is a real quality positive and worth noting, but it is a static-analysis signal, not a compatibility guarantee.

Key questions.

  1. Is this a Symfony platform or a Laravel package? If Symfony, do we actually have a Symfony workload to attach it to, or is the framing simply wrong?
  2. What is the back-compatibility and deprecation policy for 0.x releases, and is there a documented security-disclosure process?
  3. Does multi-tenancy support shared-database row scoping, schema-per-tenant, or database-per-tenant — and is there a migration/backfill story for existing data?
  4. Is stored rich-text HTML sanitised server-side, and with which library? What is the storage format and is it portable if we leave?
  5. Can the disposable-email blocklist be pinned, replaced, or disabled? What is the false-positive escape hatch?
  6. Which Symfony versions and PHP versions are supported after the Symfony 8 floor — and is Symfony 8 GA or pre-GA at the time of this release?
  7. What is the full change list? The notes are truncated.
  8. Who else besides the single maintainer has commit rights, and is there a succession/bus-factor plan?

Integration Approach

Stack fit. Decide the consumption model first; the effort estimates differ by an order of magnitude.

Model Fit Effort Verdict
Native Symfony bundle in a Symfony host Good Low–moderate Only clean path
Standalone Symfony service, Laravel calls it over HTTP/SSO Moderate High Viable, but we own a second runtime
Cherry-pick isolated PHP pieces into Laravel Poor Low Only for the blocklist/sanitiser, if dependency-light
Direct integration into a Laravel app None N/A Do not attempt

Migration path. Do not upgrade in place on a production branch. Stand up a throwaway spike on a pinned 0.4.0 tag with a representative slice of real data — including at least two tenants and one rich-text record — and answer the multi-tenancy and sanitisation questions empirically rather than from the changelog. If the spike is clean, adopt 0.4.0 as the baseline rather than migrating to it; if the spike is not clean, the correct outcome is to stay on 0.3.x and wait, which is a perfectly acceptable answer for a 0.x package.

Compatibility. The hard floors to verify against our estate before committing: PHP version implied by Symfony 8, Symfony 8 itself (availability status matters — adopting a framework version ahead of GA is a schedule risk we do not control), Node/build toolchain compatible with webpack-encore 7 and Babel 8, and Tiptap 3 for any front-end that renders or edits the stored content. Note that the front-end majors are transitive for anyone who only consumes the PHP side — but they are not transitive for anyone who ships the assets, and the UI bundle changes (Tabler layouts, user_menu KnpMenu, default form loading overlay) mean the assets are in scope. Also budget for the tenancy schema migration separately from the code upgrade; it will likely dominate the timeline.

Sequencing.

  1. Resolve the framework question and pick the consumption model (week 0, decision only).
  2. Pin and archive 0.4.0; diff the truncated changelog against the actual tag so we know what we are accepting.
  3. Spike: install on a Symfony host, run the tenancy migration against anonymised data, validate isolation with explicit cross-tenant negative tests.
  4. Security review of tenant isolation and rich-text sanitisation — independent, not self-assessed. This is a gate, not a workstream.
  5. Feature-flag everything user-visible: the Tiptap editor, the default form loading overlay, and the disposable-domain check. Ship dark, then enable per-tenant.
  6. Vendor or pin the blocklist; wire a scheduled review rather than accepting bot PRs into our dependency tree.
  7. Roll to one internal tenant, then a design-partner tenant, then general availability — with a documented rollback to 0.3.x held open throughout.

Operational Impact

Maintenance. Ongoing cost is dominated by dependency churn, not by feature work. This release alone carries roughly 60 entries, the majority automated. That is a healthy signal for hygiene but a poor signal for upgrade ergonomics: a pinned dependency will require regular, mostly-mechanical upgrades, and the front-end majors mean some of those will not be mechanical. Budget a recurring cadence rather than a one-off integration cost, and expect the Symfony 8 floor to force a framework upgrade on the vendor's schedule rather than ours. The emptied PHPStan baseline is a genuine asset here — it makes regressions visible — but only if we run the same analysis in our own CI.

Support. Bus factor is the standout operational risk. Substantive contributions come from a single maintainer; everything else is bots. There is no visible commercial support, SLA, or long-term-support branch in the notes, and no stated deprecation policy. Mitigations are to keep the integration shallow (avoid deep customisation of internals, extend at documented seams only), retain the ability to fork, and avoid making it load-bearing for anything revenue-critical in the near term. The self-updating blocklist also has a support-desk dimension: someone must own the "a legitimate customer was blocked at registration" ticket path.

Scaling. Two distinct axes. Application scaling follows the host framework — the tenancy model determines whether we contend on a shared table or fan out per tenant, and row-scoped tenancy needs the tenant key in every hot index or query performance degrades quietly as tenant count grows. The second axis is content: rich text blobs are large and, if rendered inline, expensive; plan for sanitisation and rendering to happen once and be cached rather than per request. Blocklist lookups should be an in-memory or cached set, not a per-registration query. None of this is unusual, but all of it is unverified at 0.4.0 and should be load-tested before we commit to it.

Failure modes. Ranked by blast radius:

  1. Cross-tenant data leakage — a defect in brand-new isolation code; the only failure here that is potentially unrecoverable reputationally.
  2. XSS via stored rich text — contingent on the unanswered sanitisation question; treat as likely until proven otherwise.
  3. Registration false positives — legitimate users blocked by an unpinned blocklist; recoverable but erodes trust and generates support load.
  4. Asset pipeline breakage — webpack-encore 7 / Babel 8 / Tiptap 3 colliding with our build; noisy, visible, but cheap to fix.
  5. Symfony 8 floor lock-in — we cannot take future patch releases without a framework upgrade; a slow squeeze rather than an outage.
  6. Silent UX regression — the form loading overlay now defaults on; any E2E or accessibility test asserting prior behaviour will start failing, or worse, will not.

Ramp-up. The real cost is skills, not installation. A team fluent in Laravel but not Symfony needs to absorb Symfony bundles and DI, Twig, webpack-encore, and KnpMenu before it can debug this confidently — call it two to three weeks to productive, longer to genuinely safe on the tenancy code. If we choose the standalone-service model, add operational ownership of a second runtime, its deploy pipeline, and its on-call surface, which is a permanent headcount consideration rather than a project cost. If we stay in Laravel and cherry-pick, ramp-up collapses to days, but so does the value we extract — that trade-off is the actual decision in front of us, and it should be made explicitly rather than by default.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
cgv/localized-resource