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

Laravel Soulbscription Laravel Package

lucasdotdev/laravel-soulbscription

Soulbscription is a Laravel package for subscription and feature management. Define plans, subscribe models, track feature quotas and consumption, and handle recurring or prepaid access through a clean, expressive API.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Soulbscription is an Eloquent-centric subscription and entitlement layer for Laravel: plans, features, feature consumptions, subscriptions with periodicity/grace periods, and a scheduled renewal mechanism. It fits cleanly if our commercial model is "plan + feature quotas, renewed on a schedule" and our app is already Eloquent- and scheduler-driven. It is explicitly not a payments/billing-gateway package — it owns entitlement state, not money movement — so if we run Stripe/Paddle, we must decide which system is the source of truth. It is also a poor fit for pure usage-metered/rating models.

Integration feasibility. Low-to-moderate. composer require, publish migrations/config, apply the subscriber trait to the User (or Team) model, seed a plan/feature catalog, and register the renewal command on the scheduler. The bulk of the effort is domain modeling, not plumbing. Because there is no prior assessment, this is a greenfield evaluation and the recommendation is to adopt 4.3.2 specifically rather than any earlier 4.3.x.

Technical risk.

  • Single-maintainer project (lucasdotvin) with a narrow contributor base — bus factor and long-term continuity risk.
  • Periodicity edge-case semantics. 4.3.2 is a hotfix: "Preset expiration in renewals for plans with no periodicity." In plain terms, non-recurring (lifetime / one-off) plans were having an expiration stamped on them during the renewal pass. That is a data-correctness bug, not a cosmetic one — it implies installs on 4.3.1 or earlier may hold expires_at values that should not exist. Any existing environment needs an audit, not just an upgrade.
  • State duplication. If we mirror a payment provider's subscription state, reconciliation drift is a recurring operational tax.
  • Unbounded growth. Feature-consumption records accumulate on the hot path and need a pruning policy from day one.

Key questions.

  1. Does the package's periodicity model cover our upgrade/downgrade and proration semantics, or do we own that logic?
  2. Is the renewal command idempotent and safe under overlapping/duplicate scheduler runs (no locking guarantee documented)?
  3. What is the source of truth: Soulbscription or the payment provider? Who reconciles?
  4. Which Laravel/PHP versions are supported by the 4.3.x line, and what is the maintainer's stated support window?
  5. What is the remediation for non-periodic subscriptions that already have an expiration set by ≤4.3.1?

Integration Approach

Stack fit. Laravel 10/11 on PHP 8.1+, MySQL or Postgres, standard Laravel scheduler (cron or schedule:run worker). No new infrastructure class is introduced — it is a database-backed domain package. Fits a conventional Laravel deployment without architectural change.

Migration path. Greenfield: install ^4.3.2, publish and run migrations, seed plans/features, apply traits, register the renewal command. If any pre-production or staging environment already ran 4.3.0/4.3.1, treat the upgrade as upgrade + data audit: query for subscriptions on plans with no periodicity that carry a non-null expires_at, and null them out after confirming intent.

Compatibility. 4.3.2 is a patch release against 4.3.1 — semver-compatible, no config or migration changes indicated, drop-in for anyone already on 4.3.x. Pin to ^4.3.2 (or 4.3.* with a floor of 4.3.2) so the expiration bug cannot be reintroduced by an older lockfile.

Sequencing.

  1. Sandbox install and spike the plan/feature catalog against two or three real commercial scenarios.
  2. Model the subscriber trait (User vs. Team) — this is hard to change later.
  3. Implement entitlement checks behind a feature flag so existing access logic can be toggled back.
  4. Register the renewal command, add monitoring/alerting on run success and on lapsed subscriptions.
  5. Run the expiration backfill/audit (if any prior 4.3.x data exists).
  6. Cut over entitlement enforcement, then decommission the legacy checks.

Operational Impact

Maintenance. Thin dependency, but requires active stewardship: review every release note rather than auto-bumping — 4.3.2 is proof that patch releases can carry behavioral corrections to billing state. Budget a named owner and a recurring monthly changelog review.

Support. Community-only: GitHub issues, no vendor SLA, no commercial support path. Any production incident traces to our own team, so we should be prepared to fork or vendor the renewal logic if the maintainer goes dormant.

Scaling. The workload is database-bound rather than compute-bound. The renewal pass is a batch job over due subscriptions — chunk it and push to the queue as subscription volume grows, and index the expiry/next-renewal columns. Feature consumption is a hot write path on user-facing requests; watch row-lock contention if consumptions are transactional.

Failure modes.

  • Missed scheduler run → renewals silently lapse and users lose access with no error surfaced. Needs a heartbeat/alert, not just a cron entry.
  • Overlapping renewal runs (deploy overlap, duplicate workers) → duplicate renewals or double-charged entitlements; add an external idempotency guard if the package doesn't provide one.
  • Non-periodic plans acquiring expiration — the exact defect fixed in 4.3.2; ensure the floor version is enforced and legacy rows are cleaned.
  • Timezone/DST drift in periodicity math around month-end boundaries.
  • Consumption table growth degrading query performance over quarters, not weeks.

Ramp-up. A Laravel-fluent engineer can stand up a working integration in one to two days. The real cost is domain alignment: periodicity, grace periods, and feature-quota semantics need product review before the model is locked in, because retrofitting those semantics after subscriptions exist is materially harder than getting them right up front.

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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource