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

User Id Email Bundle Laravel Package

tourze/user-id-email-bundle

A lightweight Symfony bundle from Tourze that connects user IDs with email addresses, making it easy to store, look up, and resolve user identifiers across your application. Simple service integration and minimal configuration for Doctrine-backed projects.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Package: tourze/user-id-email-bundle, version 0.0.1

Release signal quality — critical caveat: The 0.0.1 release notes contain only an auto-generated changelog link. There is no description of scope, API surface, supported PHP/Laravel versions, or breaking-change policy. This is the initial tag, so the release itself is not a change event — it is the package's first appearance. Every conclusion below is therefore provisional and must be re-validated against the actual repository contents (README, composer.json, tests) before any commitment.

Architecture fit

  • The -bundle suffix and the tourze vendor namespace strongly suggest a Symfony-style bundle (a *Bundle class plus DependencyInjection/*Extension), not a Laravel package with a ServiceProvider. If so, it will not be auto-discovered by Laravel's package manifest and will need an explicit bridge or direct class usage.
  • The name implies a bounded concern — resolving/associating a user by ID and by email. That is a small, well-understood domain, which is favorable: even if the package is unsuitable, re-implementing the behavior is cheap.
  • Tourze packages are typically fine-grained micro-packages that depend on several sibling packages. Expect transitive tourze/* dependencies, which multiplies the surface area we must vet.

Integration feasibility

  • Unverified until composer.json is inspected: PHP constraint (^8.x?), framework constraints, PSR compliance, presence of a test suite in CI.
  • Because it is 0.0.1, there is no evidence of a working integration in a Laravel app. Budget a timeboxed spike before estimating.

Technical risk

  • High, driven by immaturity, not complexity. Semver treats 0.0.x as explicitly unstable — the maintainer reserves the right to break the API in any patch release. Pinning is mandatory; floating constraints are unacceptable.
  • Single-maintainer / low-bus-factor risk is likely and unverified.
  • Duplication risk: Laravel already provides user identity via Authenticatable, users.email with a unique index, and PasswordBroker. If this package ships its own entity, table, or migration, it competes with App\Models\User rather than complementing it.
  • Data-integrity risk: email-as-identifier invites case-folding, Unicode normalization, and soft-delete/unique-index edge cases. Unproven code in this area is a real hazard.

Key questions to close before adoption

  1. Is it a Symfony bundle, a Laravel package, or framework-agnostic? What is the actual entry point?
  2. Exact require block and resolved dependency tree — how many tourze/* packages come along?
  3. Does it own a database table or operate against an existing users table? Does it ship migrations?
  4. Test coverage and CI status; is the 0.0.1 tag reproducible from a green build?
  5. What is the license, and who is the maintainer of record?
  6. Does it overlap with laravel/ui, Fortify, Breeze, or Sanctum in a way that creates conflict?

Integration Approach

Stack fit

  • Treat as unproven until the spike passes. The realistic outcomes are (a) it is a thin, framework-agnostic helper we can call from a service class, (b) it is Symfony-coupled and only usable behind an adapter, or (c) it duplicates native Laravel identity and should be rejected.
  • If (a) or (b), wrap it: expose our own UserIdEmailResolver interface and keep the vendor calls behind it. This is the single highest-leverage decision — it converts an unstable 0.0.x dependency into a swappable detail.

Migration path

  • No prior assessment exists, so there is no migration — this is a greenfield evaluation. Do not introduce it into an existing auth flow; introduce it in a branch behind the adapter and a feature flag.
  • If it ships schema, any migration must be reviewed against our users table for index and constraint collisions before running outside a throwaway database.

Compatibility

  • Pin exactly ("tourze/user-id-email-bundle": "0.0.1") and commit the lock file. Do not use ^0.0.1.
  • Verify composer why-not / composer update --dry-run against our current Laravel and PHP versions in a scratch project first, so a failed constraint does not perturb the main lock file.
  • Confirm Laravel package discovery: run php artisan package:discover and check bootstrap/cache/packages.php for the provider. Absence confirms the Symfony-bundle hypothesis.

Sequencing

  1. Spike (1–2 days): fresh Laravel app, composer require the pinned tag, inspect composer.json, README, src/, and tests. Record the real entry point and dependency count.
  2. Contract test: write a small suite exercising the behaviors we actually need (lookup by ID, lookup by email, edge cases: mixed case, plus-addressing, soft-deleted, duplicate). This suite becomes our regression harness across future vendor bumps — essential given no BC promise.
  3. Adapter + feature flag in the real codebase, dark-launched.
  4. Re-evaluate at 0.1.0 or the first non-trivial release. Do not promote to a default path while the version is 0.0.x.

Operational Impact

Maintenance

  • Every upgrade is a manual, tested event — patch releases included. There is no semver safety net at 0.0.x.
  • Assume ongoing cost of a forked or vendored copy if the upstream stalls; the domain is small enough that this is a viable exit, which caps the downside.

Support

  • No documentation was provided with the release. Expect to read source. No known community, no issue-tracker history at 0.0.1 — support is effectively "the maintainer's goodwill."
  • We should own an internal one-pager documenting what we use and why, so knowledge does not reside with one engineer.

Scaling

  • The workload is likely a per-login or per-registration lookup — low volume relative to typical read paths. Optimize only if the package issues queries in a loop; verify with a query log during the spike.
  • If email lookups land on a hot path, ensure the underlying column is uniquely indexed and consider a case-normalized column rather than relying on the package's comparison semantics.

Failure modes to design for

  • Silent behavioral change on a patch bump — mitigated by exact pinning plus the contract test suite.
  • Unique-constraint violation from case-variant or Unicode-variant emails reaching storage unnormalized.
  • Soft-delete collisions: a re-registering user matching a soft-deleted row, causing a 500 instead of a clean domain error.
  • Dependency drift: a sibling tourze/* package resolving to a new version and changing behavior underneath us.
  • Schema conflict if the package's migrations collide with existing users indexes.
  • Always degrade to a clear domain exception, never a framework 500; the adapter is the place to enforce that.

Ramp-up

  • Low: the domain is intuitive and the adapter keeps the vendor surface tiny. Budget ~1–2 days for the spike plus ~1 day for adapter and tests.
  • Note for stakeholders explicitly: 0.0.1 is a first tag, not a mature release. Recommendation is evaluate, do not adopt until documentation exists, the test suite is verified green, and a 0.1.x release demonstrates the maintainer's cadence and backwards-compatibility discipline.
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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource