anomaly/contact-plugin
Contact plugin for Anomaly/PyroCMS built on the Streams Platform. It adds a configurable front-end contact form with validation, stores submissions, sends email notifications, and provides admin screens for reviewing entries and managing form settings. Use it to add a simple, manageable contact work...
Architecture fit
anomaly/contact-plugin is not a standalone Laravel package — it is an addon for the AnomalyLabs Streams Platform (the CMS framework lineage behind PyroCMS/Anomaly). In that ecosystem a "plugin" is a Twig extension provider registered through the addon service provider, so this package almost certainly contributes a Twig function that renders a contact form and a matching route/controller that validates input and dispatches mail through Laravel's Mail facade. That means it fits cleanly only if the target application already runs Streams Platform with a Twig-rendered front end. On a vanilla Laravel/Blade application it is not composable — adopting it means adopting the entire addon/CMS layer.
Integration feasibility
Mechanically straightforward: composer require anomaly/contact-plugin, install the addon through the platform's artisan command surface, run migrations, publish views/config/language files, then drop the Twig function into a page. The real gate is the composer.json constraint against anomaly/streams-platform and, transitively, the Laravel major. Streams has historically tracked specific Laravel majors with lag, so on a modern Laravel (10/11/12) install this is likely to conflict or require --ignore-platform-reqs hacks that we should not accept in production.
Technical risk High, and mostly unknown-shaped rather than known-bad. Zero stars and zero dependents means no external evidence of a working install on any current version, no issue history to mine for failure modes, and no community triage. There is no visible test suite, no security disclosure path, and no stated spam mitigation (CAPTCHA, honeypot, rate limiting) — a public contact endpoint without those is an operational liability on day one. MIT license is fine, but the practical maintenance covenant is effectively "none."
Key questions
streams-platform / Laravel / PHP constraints does composer.json declare, and does it resolve cleanly without flag overrides?ShouldQueue mailable?Stack fit Only viable where the stack is Anomaly/Streams Platform + Twig. If our estate is Blade-first Laravel, the honest recommendation is to skip this package and spend the same effort on a small first-party form (a mailable, a form request, a controller, and a Blade partial) — roughly a day of work, fully owned, no CMS coupling.
Migration path Assume this is replacing something: a hand-rolled contact controller, a third-party form SaaS, or nothing at all. Install into staging first, run the addon in parallel with the incumbent, and compare captured submissions and delivered mail across a week of real traffic before swapping the Twig include into the production template. Keep the old route mounted but disabled behind a feature flag until the cutover is confirmed.
Compatibility
Pin the addon and anomaly/streams-platform to exact versions in composer.lock; do not allow floating constraints. Validate on the same PHP minor as production. If resolution against our Laravel major fails, treat that as a stop signal rather than forcing it — a patched dependency tree in a CMS addon is how you get a Friday-night incident.
Sequencing
Maintenance Treat this as vendored source we own, not a dependency we consume. Budget a fork in our org, a pinned lockfile entry, and a standing ticket to review it each time we bump Laravel or Streams. With zero dependents there will be no upstream pressure to keep it current, so drift is guaranteed and the fork is the only realistic mitigation.
Support No community, no issue history, no visible SLA. Escalation is limited to the vendor (small team) or ourselves. For a contact form — a low-complexity, high-visibility feature — that asymmetry argues for owning the code outright.
Scaling Load is negligible: one form submission is one request, one validation pass, one mail job, optionally one insert. The only scaling concern is mail throughput and third-party SMTP latency if sending is synchronous — a slow relay would hold PHP workers and degrade the whole site under a spam burst. Force the mailable onto a queue and add a rate limit per IP.
Failure modes
From: or missing DKIM/SPF sends everything to spam; users assume the form works.composer update of Streams changes the Twig function signature or plugin registration contract and the form 500s on the page.Ramp-up A Laravel developer can read this codebase in half a day; the Twig function and controller are small. The real ramp is Streams Platform literacy — addons, streams, assignments, and the admin UI's configuration surface — which is roughly 3–5 days to genuine productivity, and that cost lands on whoever inherits the site, not just on this project. Plan for at least two people to hold that context, and write the runbook (config location, recipient change procedure, rollback) as a deliverable of the integration, not an afterthought.
How can I help you explore Laravel packages today?