- Is simpleweb/saas-bundle a Laravel package?
- No. It is a Symfony 2 bundle for Stripe subscription billing, not a Laravel package. Symfony bundles rely on kernel registration, the Symfony DI container, Doctrine mappings, and the Symfony event dispatcher, which do not map directly to Laravel service providers, Eloquent, and queued jobs. There is no drop-in integration path for a Laravel application.
- Can I install simpleweb/saas-bundle in a Laravel 10 or 11 app?
- Practically no. The bundle targets Symfony 2 and Doctrine 2.x from the PHP 5.x and 7.0 era, and those constraints conflict with PHP 8.1+ and modern Laravel releases. Bridging it into Laravel would require custom container, ORM, and eventing adapters, and that cost exceeds writing the subscription logic natively. Treat it as a reference, not an installable dependency.
- What Laravel versions does this package support?
- None natively, because it is not a Laravel package. It targets Symfony 2.x applications, and Symfony 2 reached end of life in 2018. You should not expect Laravel version constraints or Laravel-specific compatibility from this repository.
- How do I install simpleweb/saas-bundle with Composer?
- In its native context, you would require it with Composer in a Symfony 2 application and register the bundle in the Symfony kernel. Dependency pins from the PHP 5.x and 7.0 era are likely to fail on current PHP versions. For a Laravel application, do not install it; use a maintained Laravel billing package instead.
- What features does simpleweb/saas-bundle provide for SaaS billing?
- It provides Stripe subscription billing for plans, subscriptions, and invoices. It also includes webhook handling to keep local billing state in sync, configurable entities for users, plans, and subscriptions, and Symfony-native services, events, and controllers. The value today is mostly as a domain model reference.
- How does the bundle handle Stripe webhooks and billing state sync?
- The bundle integrates Stripe webhooks to update local billing state so plans, subscriptions, and invoices stay aligned with the gateway. Its implementation is Symfony-centric, using Symfony services, events, and controllers rather than Laravel jobs and listeners. Before relying on any of its webhook patterns, verify idempotency, retry semantics, and the Stripe API version it targets.
- Is simpleweb/saas-bundle maintained and safe for production billing?
- The maintenance signals are weak: roughly 24 stars, 0 dependents, no identified maintainer, no active forks, and no visible security triage. Symfony 2 is end of life, and transitive dependency CVEs have no clear upstream patch path. Billing is high-consequence code, so this bundle should not be adopted for new production work.
- What are the best Laravel alternatives to simpleweb/saas-bundle for subscriptions?
- The main alternatives are Laravel Cashier for Stripe or Paddle, Laravel Spark, Paddle as a merchant of record, or a bespoke billing module built on a maintained SDK. The usual recommendation is to buy the payment rails and build only the entitlement logic that differentiates your product. Use this bundle as a checklist for domain concerns, not as a dependency.
- Can I reuse the bundle's subscription state machine and domain model in Laravel?
- You can reuse the design concepts, but not the code directly. Extract the entities, states, transitions, and invariants for plans, subscriptions, trials, invoices, team membership, and invitations, then re-express them as Eloquent models plus enums or state machines. Replace Symfony event dispatcher hooks with Laravel events, listeners, and queued jobs, and confirm the license permits re-expression.
- How should I evaluate simpleweb/saas-bundle for a Laravel project?
- Treat it as a domain reference artifact, not a package to adopt. Audit the source for its subscription lifecycle, plan catalog, seat modeling, and billing edge cases, then implement those patterns idiomatically in Laravel with a maintained payment SDK. If a legacy Symfony 2 service is actually in scope, isolate it behind a service boundary and plan an exit rather than extending it.