happyr/birthday-bundle
A Symfony bundle from HappyR that adds birthday support to your application. It offers birthday-related services and simple configuration to help you track and manage user birthdays within Symfony projects.
happyr/birthday-bundle addresses exactly one thing: rendering a "upcoming birthdays" widget (a list of names and dates with age/formatting helpers). Its entire value is saving roughly a day of template and query work. That is not a dependency decision — it's a sprint-task decision, and it should be framed that way in any build-vs-buy conversation.symfony-bundle Composer type, AppKernel registration, DI service config, Doctrine repositories, Twig extension). There is no Laravel auto-discovery path, no service provider, no Blade directive. "Adopt" here actually means "fork and port," which converts a buy decision into an engineering-time decision — and the engineering time is larger than writing it fresh.Consider it only when all of the following hold:
Look elsewhere — or build in-house — when:
BirthdayInterface → a HasBirthday trait with a date cast; BirthdayManager → query scopes plus a service; Twig extension → a Blade component; bundle DI config → a service provider with publishable config. That rewrite is well under a sprint day with tests, and you keep your own conventions.whereBetween-style query, and a small view partial. A mid-level engineer reproduces it in a day, with tests, your timezone semantics, and your privacy rules — and without a long-term liability.For executives (one paragraph): We evaluated happyr/birthday-bundle, a small Symfony add-on for rendering birthday widgets. It is not a fit: it targets Symfony rather than our Laravel stack, it has no adoption whatsoever (0 stars, 0 dependent projects), and it has not been released since November 2017, so adopting it would hand us an unmaintained liability instead of a shortcut. The capability it covers — showing upcoming birthdays on a profile or directory page — is small, well understood, and cheap to build correctly ourselves, including the privacy, timezone, and leap-year handling the package does not provide. Recommendation: do not adopt. Treat it as a design reference only, and scope the feature in-house if and when it earns a place on the roadmap.
For engineering (summary): This is a Symfony bundle, not a Laravel package, so there is no drop-in path — adoption means a port. The surface is a birthday field on the user model, a date-window query, and a Blade partial; upstream contains no notification, scheduling, timezone, locale, or consent logic, and its 2017 constraints won't resolve cleanly on PHP 8.2+ / Laravel 10–11 without forking composer.json. With zero downstream dependents there is no community, no issue corpus, and no security triage to lean on. Do not add it to composer.json. If the feature is prioritized, implement it directly against our own user model with explicit, written decisions on four things: birth-year visibility and consent, the timezone anchoring "today," Feb 29 behavior, and whether the widget is passive or triggers notifications. Watch query design at scale — avoid MONTH()/DAY() predicates on the birthdate column; use a persisted month/day column and index it, and cache the widget fragment on the viewer's local-midnight boundary. Estimate: well under one engineering day plus tests, with the compliance review as the longer lead item. If the team wants inspiration, read the upstream date-math class once, extract the query-window approach, and then close the tab.
How can I help you explore Laravel packages today?