frequence-web/contact-bundle
Contact bundle from Frequence Web for PHP applications. Adds reusable contact form handling so you can capture, store, and manage incoming contact requests through a simple configurable integration. Ideal for adding a ready-made contact workflow to Symfony/PHP projects without building form and pers...
Architecture fit: Poor — this is not a Laravel package. The name and namespace (FrequenceWebContactBundle) indicate a Symfony bundle, not an Illuminate-compatible package. It will depend on Symfony's DependencyInjection, HttpKernel, and EventDispatcher components and follow Symfony bundle conventions (bundle class, extension, configuration tree, service definitions in YAML/XML). Laravel's equivalents — service providers, the Illuminate\Events dispatcher, config publishing, facades — are structurally different. The only genuine overlap is the concept: dispatching domain events on contact lifecycle actions (submission, validation, persistence, notification). That pattern maps cleanly onto Laravel's event/listener system, but the code does not.
Integration feasibility: Low as a dependency, medium as a reference implementation. There is no evidence of a Laravel service provider, no illuminate/* constraints, likely PSR-0 or early PSR-4 autoloading, and PHP version constraints from the Symfony 2 era that will conflict with modern Laravel (PHP 8.2+, Symfony 6/7 components). Attempting composer require in a Laravel app will almost certainly produce dependency resolution failures or force downgrades of shared Symfony contracts. Feasible path: vendor the source for reading, extract the event contracts and dispatch points, and reimplement natively.
Technical risk: High.
Key questions for the requester:
Stack fit: Essentially nil out of the box. A Laravel 10/11 application cannot consume a Symfony bundle idiomatically. There is no bundle registration equivalent, no config/contact.php publish path, and no Laravel-native event classes. Treat this repository as a design reference, not a dependency.
Recommended migration path — concept port, not package adoption:
EventDispatcher → Illuminate\Contracts\Events\Dispatcher; bundle services → a package service provider with bound interfaces; extension config → config/contact.php with mergeConfigFrom and publishes; listener tags → Event::listen or auto-discovered listeners.acme/laravel-contact-events) with the event contracts, a service provider, publishable config, and feature tests. Retain the MIT attribution notice for any ported logic.Compatibility considerations:
Request/Response objects leaking into domain logic — if present, that coupling must be broken before reuse.illuminate/support and PHP constraints and be tested against the Laravel versions we actually run.Sequencing:
Maintenance: We inherit 100% of the maintenance burden the moment we copy or fork. Upstream is effectively dormant — no issue triage, no security patches, no PHP/Laravel version compatibility work. Budget a maintained internal fork or, preferably, an internally owned package with a named code owner. Add it to the dependency register as "vendored concept, self-maintained" so it does not masquerade as a third-party dependency with upstream support.
Support: No community, no documentation beyond a README, and 0 dependents means no external signal that anyone has run this in production recently. Internal knowledge transfer must be deliberate: the event inventory document becomes the primary artifact, not the code.
Scaling: The package itself is thin — event dispatch and contact handling — so it is not a scaling bottleneck. Scale characteristics are determined by what our listeners do (synchronous notification, external CRM calls, queue usage). Recommend Laravel queued listeners for any I/O-bound reaction, and ensure events carry identifiers rather than full serialized payloads to keep queue messages small and PII exposure contained.
Failure modes to design against:
composer.json conflict entry and a note in the ADR.Ramp-up: Code volume is small, so comprehension cost is low in absolute terms — but the idioms are Symfony 2-era and unfamiliar to a Laravel team, which inflates the effective ramp. Estimate 2–4 days for a senior engineer to complete the audit and event inventory, 1–2 weeks for a hardened internal package with tests, and ongoing low-touch maintenance thereafter. The opportunity signal (0.76) suggests the problem space — event-driven contact handling — is worth pursuing even though the artifact is not adoptable; direct the investment at the pattern, not the package.
How can I help you explore Laravel packages today?