Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Contact Bundle Laravel Package

kphoen/contact-bundle

kphoen/contact-bundle is a lightweight Symfony bundle for adding a contact form to your application. It provides the form and basic message-handling workflow, making it easy to collect inquiries and integrate contact requests into an existing Symfony project with minimal setup.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — incompatible by design. kphoen/contact-bundle is a Symfony bundle, not a Laravel package. It carries the full Symfony idiom set: a Bundle class, a DI extension loading service definitions, Doctrine ORM entities and mappings, Symfony Form types, Twig templates, YAML/XML routing, and Swiftmailer-based delivery. Laravel expects service providers, Eloquent/query builder, Blade, FormRequests, and the Mail facade. There is no shim path — a Laravel app cannot register a Symfony bundle without importing the Symfony kernel, and importing the kernel to send a contact form is an architectural non-starter. Fit score as a drop-in dependency: zero.

Integration feasibility — reference material only. The realistic use is as a design reference: how it models a contact submission, what fields it validates, how it routes recipients, whether it persists or fire-and-forgets. That is roughly an hour of reading. Everything else — the code, the wiring, the templates — is throwaway.

Technical risk — high and unrecoverable. The repository is archived, last released 2016-01-21, with 7 stars and 0 dependents. That places it in the PHP 5.6/7.0 and Symfony 2.8/3.x era. Swiftmailer, its delivery layer, reached end of life in November 2021 and receives no security patches. Pinning it alongside any modern dependency graph will either fail Composer resolution outright or force transitive downgrades that compromise the rest of the application. MIT license means legal reuse is clean; the supply-chain risk is not about licensing, it is about a dead dependency with no CVE response path. The quality score (0.0625) is consistent with this. The high opportunity score (0.94) signals that contact-form tooling is a real, recurrent need — it does not signal that this artifact is the answer to it.

Key questions for the team.

  1. What is the actual requirement — email-only notification, persisted submissions for audit, or a lightweight ticketing inbox? Each implies a different build.
  2. Is a contact form a shared platform component across products, or a one-off per app? This determines build-vs-buy economics.
  3. What are the deliverability, spam-abatement, and PII-retention requirements? These dominate the design far more than the CRUD does.
  4. Who owns the module after launch, and has that owner been named?
  5. Is there any reason to prefer a Symfony-derived implementation over native Laravel beyond "it already exists"? Given the archive status, the answer is no.

Verdict: do not adopt. Port the concept into a native Laravel module.

Integration Approach

Stack fit. None at the dependency level. The only transferable assets are the domain shape: a submission payload (name, email, subject, body), validation rules, a recipient-routing config, and an optional persistence record. Every one of these has a first-class Laravel equivalent and none require the bundle.

Migration path. Write the module natively rather than adapting the bundle. A minimal, production-worthy implementation:

  • ContactController with a StoreContactRequest FormRequest (validation, honeypot, rate limiting via throttle middleware).
  • A ContactMessage Mailable with a Blade template, dispatched through a queued job so the HTTP response is not blocked on SMTP.
  • A contact_messages migration only if the requirement calls for persistence or audit; otherwise skip it and keep the system stateless.
  • Recipient routing driven by config/contact.php so ops can retarget without a deploy.
  • Feature tests for validation rejection, successful dispatch, and rate-limit behavior.

Realistic effort: 1–2 developer-days including tests. Adapting the bundle to run under Laravel is not a smaller number — it is a larger, unbounded one.

Compatibility. The bundle's PHP and Symfony constraints predate modern runtimes by four or more major PHP versions. It will not install in a current stack, and even in a legacy Symfony app it would pull EOL mail infrastructure. There is no forward-compatibility story and no maintainer to produce one.

Sequencing.

  1. Lock the requirement scope (email-only vs. persisted vs. inbox) — one decision meeting, blocks everything downstream.
  2. Prototype the native Laravel module behind a feature flag.
  3. Layer spam controls (honeypot, rate limit, optional CAPTCHA or Akismet) — these are the actual failure surface, not the form.
  4. Stand up transactional mail with a real provider (SES, Postmark, Mailgun) and verify DKIM/SPF before any UI work ships.
  5. Add persistence and retention policy only if step 1 demanded it.
  6. Document the config surface for ops.

Note the sequencing inversion: mail infrastructure is step 4, not the last step. Most contact-form incidents are deliverability and spam incidents, not application-logic incidents.

Operational Impact

Maintenance. Adopting an archived bundle transfers 100% of maintenance to your team on day one, and unlike in-house code, you inherit a codebase written against a framework generation your engineers do not work in daily. The native alternative is ~200 lines your team already knows how to read.

Support. There is no maintainer, no issue triage, no release cadence, and effectively no community — 7 stars and 0 dependents means no Stack Overflow corpus, no blog posts, no second adopter to compare notes with. Any incident is a solo debugging exercise against unfamiliar Symfony 2/3 idioms. Contrast with the native path, where the support surface is Laravel's documentation and the team's existing expertise.

Scaling. Contact-form traffic is trivially low-volume; horizontal scaling is a non-issue for either option. The real scaling constraints are (a) mail provider throughput and reputation, and (b) spam volume, which is adversarial and unbounded. Neither constraint is addressed by the bundle, and the EOL Swiftmailer layer actively worsens (a) by lacking modern transport and retry semantics.

Failure modes to plan for.

  • Silent mail loss — synchronous SMTP send inside the request cycle swallows failures into a 500 or, worse, a 200 with no delivery. Mitigate with queued jobs, provider webhooks, and delivery alerting.
  • Spam flooding — no rate limiting or content filtering means the recipient inbox and any persistence table absorb the damage. Mitigate at the edge.
  • PII retention — persisted submissions with no expiry become a compliance liability. Mitigate with a scheduled prune job and a documented retention window from day one.
  • Dependency resolution failure — attempting to install the bundle breaks the Composer graph, potentially blocking unrelated deploys. This is the highest-probability failure mode and the easiest to avoid.
  • Unvalidated input reaching the mailer — header injection via the subject or reply-to fields. Native FormRequest validation with strict rules closes this.

Ramp-up. Near-zero positive ramp-up. An engineer would spend more time reverse-engineering a decade-old Symfony bundle than writing the Laravel equivalent from scratch. The genuine ramp-up cost in this workstream is mail deliverability and anti-spam configuration — operational knowledge, not package knowledge — and it is identical regardless of which implementation path is chosen. That asymmetry is the whole argument: the bundle adds cost and subtracts nothing from the hard part.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator