rich-id/terms-module-snappy-bundle
A Laravel module from rich-id that bundles terms and conditions handling with Snappy PDF support, so you can manage, render, and serve policy documents from a single package. Note: minimal adoption and metadata; review the source before use. (219 characters)
The v1.0.0 release note — "Initial version of Snappy Generator" — materially narrows what this package is, and that narrowing changes the decisions it actually informs. The earlier read assumed a terms-and-conditions module with a PDF export bolted on. The release note says the load-bearing (and apparently only) component is the Snappy generator: a thin binding that hands HTML to wkhtmltopdf and returns a PDF. The terms domain model — versioning, per-user acceptance, re-acceptance rules — is not evidenced here and should be assumed absent until a spike proves otherwise.
That means this package informs a much smaller set of decisions than a legal-document module would:
wkhtmltopdf stays in your stack. Adopting this package is a commitment to a Qt-WebKit binary in your container image, its CVE/patching tail, and a renderer the industry has largely moved off. That is a platform decision, and it is being made by a package with no adoption evidence behind it.Two caveats. First, the version bump to 1.0.0 is at least a signal of intent — someone chose to declare it stable — but with an empty data payload, zero stars, zero dependents, and a one-line changelog, it is not evidence of maintenance or of an API you can rely on. A 1.0.0 tag on an unadopted package is a claim, not a guarantee. Second, the release note is the entire new information: it does not tell us whether the terms entities from the earlier hypothesis live elsewhere in the rich-id ecosystem. Confirm that with the same short spike before drawing conclusions about scope.
The criteria tighten now that the package is confirmed to be a generator rather than a domain module:
rich-id ecosystem and it already supplies the terms entities, contracts, and acceptance records. In that case this is the rendering seam, and it is small, legible glue. Outside that ecosystem it is a dependency with no domain value.wkhtmltopdf for other reasons, so this adds no new runtime surface. If Snappy is already in your image and patched, the marginal cost is near zero.Look elsewhere, or write the binding yourself, if any of the following is true:
For executives: This is a small, MIT-licensed PDF generation binding — it turns HTML into a document using wkhtmltopdf. It does not appear to include the terms versioning or acceptance tracking that a legal-document module would carry, so it does not reduce the scope of work for onboarding, KYC, or seller agreements. The new 1.0.0 tag signals someone declared it stable, but there is still no measurable adoption and the changelog is a single line. Recommendation: treat it as a reference for a pattern we should own, not a component to depend on. No license cost, no budget line, and no strategic dependency.
For engineering: Read this as a Snappy generator, not a terms module. Expect a service provider, a config file, and a binding to the wkhtmltopdf binary. Half a day to read it; a day to prove it renders in your container. Assume the terms and acceptance models are yours to build, and assume no upstream fixes. Decide the renderer as its own explicit decision: if Snappy is already in your image, this is close to free; if not, compare Browsershot or Dompdf against writing the binding yourself, which will usually win because the binding is small and the renderer is the risk. Surface the wkhtmltopdf binary in image-size and CVE-patching reviews before adoption, not after.
For stakeholders jointly: The defensible position is unchanged and now better evidenced: own the pattern — versioned terms, per-user acceptance, immutable rendered artifact — in our codebase, and treat this package as documentation of one implementation detail. Adopt it only if we are already committed to both rich-id and wkhtmltopdf, where the cost of ownership is genuinely low. The 1.0.0 release does not move that line; it confirms the package is narrower than its name suggests, which makes the decision smaller and the case for building it ourselves stronger.
How can I help you explore Laravel packages today?