gramzivi/flag-it-bundle
FlagItBundle adds a flexible flagging and moderation system to Symfony applications. Users can report content or entities, define configurable flag types, and help teams review and manage flagged items through a simple, integration-friendly workflow.
clients + defaults config model plus ClientContextInterface is the key capability — it makes per-tenant entitlement and "on/off per customer" gating a first-class concept rather than an ad-hoc if (tenant_id === ...) tangle.DefaultClientContext reading from env or a parameter means the active client is a deploy-time/runtime decision, not a hardcoded one — enabling safe canary tenants and instant kill-switches without a deploy.ClientContextInterface allows custom resolution (subdomain, JWT claim, header, DB lookup) — a product decision about how tenancy is determined can be deferred, as long as the interface is implemented.Consider adoption when:
Look elsewhere when:
ClientContextInterface implementation stretches the model too far.Adoption guardrails: treat beta status as a real risk. Wrap the package behind a thin internal interface, pin the exact version, and confirm the DefaultClientContext env/parameter resolution matches your tenancy model before rollout.
For executives: This is a small, self-hosted feature-flag library that lets us switch capabilities on or off per customer without redeploying. It's the mechanism that makes design-partner betas, tiered entitlements, and instant rollback of a bad feature cheap. The trade-off is build vs. buy: we avoid vendor per-seat flag costs and keep customer data in-house, but we forgo vendor SLAs, dashboards, and experimentation tooling. Recommendation: pilot on one non-critical rollout in a single tenant before broad adoption.
For engineering: v1.0.0-beta gives us a stable core flag manager plus multi-client configuration — clients/defaults config blocks, a ClientContextInterface we can implement for whatever tenancy signal we use (subdomain, header, JWT), and a DefaultClientContext reading from env or a parameter. Resolution precedence is global → per-client → default, which is predictable and easy to reason about. The beta also fixes service autowiring for array arguments, so container wiring should be clean. Requirements are PHP 8.1+ and Symfony 6.4/7.x. Action items: pin the version, wrap it behind an internal flag interface so we can swap it, and decide our ClientContextInterface implementation early since the package leaves that to us.
How can I help you explore Laravel packages today?