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

Username Laravel Package

x-laravel/username

A Laravel package for adding username support to Eloquent models, with configurable username generation, validation rules, uniqueness checks, and helper methods for registration and profile flows. Lightweight and easy to configure.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for username identity: This package covers a deceptively expensive slice of account management—format validation, reserved-name checks, collision-safe generation, history/redirect behavior, and retention/pruning. A PM can treat it as a buy/Adopt decision rather than spending roadmap capacity on custom validation and edge cases.
  • Username change and rebranding flows: History support means old usernames resolve through whereUsername(), findByUsername(), and route model binding, while remaining reserved for their owner for a configurable period. This directly supports product decisions around allowing username changes without breaking links or enabling impersonation.
  • Onboarding and account creation: UsernameGenerator::normalize() and generate() reduce friction when users need a valid, available username quickly, including retry behavior for unique-index races via the InteractsWithUsername trait.
  • Abuse and impersonation prevention: The NotReserved rule and reserved-name list—configurable for English and Turkish names—support policy decisions around preventing handles that impersonate staff, brands, or sensitive identities.
  • Localization and market fit: Turkish and English reserved names and string aliases make this more relevant for products launching or operating in Turkish-speaking markets, without forcing a custom reservation system.
  • Data retention and operational policy: Scheduled pruning of old history rows with configurable frequency, age, and chunk size lets a PM balance user experience (“my old profile URL still works”) against privacy, storage, and compliance expectations.
  • Analytics and lifecycle messaging: UsernameChanged and model events after commit give product and lifecycle teams reliable hooks for notifications, audit trails, and funnel analysis around username changes.
  • Roadmap sequencing: The package supports a focused v1 scope: ship username rules, generation, history, and events first; defer broader identity/profile features unless the product requires them.

When to Consider This Package

Consider adoption when:

  • The product is built on Laravel/PHP and uses a user-facing username as a public identifier, profile URL segment, or mention handle.
  • You need enforced format rules (lowercase letters, digits, hyphens, underscores, dots; configurable length and parts) rather than ad hoc validation.
  • You want reserved-name protection out of the box, especially for English and Turkish markets, with configurability.
  • You expect users to change usernames and need old names to keep resolving or stay reserved for a period.
  • You want collision-safe generation and retry behavior instead of building concurrency handling around a unique index.
  • You need events and model hooks for notifications, auditing, or downstream systems when a username changes.
  • You want scheduled cleanup of history data with configurable retention rather than manual maintenance.
  • You can accept a focused package that handles usernames—not authentication, authorization, or full profile identity.

Look elsewhere or plan custom work when:

  • The application is not Laravel or you need a framework-agnostic identity component.
  • Usernames are internal-only IDs with no user-facing or URL significance.
  • You need a full identity/profile platform including display names, avatars, verification badges, global namespace across multiple account types, or complex moderation.
  • Your product requires advanced content moderation, profanity detection, or AI-based impersonation checks beyond a configurable reserved list.
  • You cannot introduce the expected database structures (unique index, history table) or scheduled pruning.
  • You need multi-tenant or cross-model namespace rules that go beyond the package’s model-level contract and trait.
  • You are highly sensitive to package-level opinions and prefer owning every validation and retention detail in-house.

How to Pitch It (Stakeholders)

For executives: This package turns a narrow but high-risk part of account management into a configurable capability instead of custom code. It helps us ship user-facing usernames faster, reduce impersonation and broken-link risk when users rename themselves, support English and Turkish reserved-name policies, and enforce retention rules for old usernames. It is a focused Laravel component, not a full identity platform, so it is best framed as a build-vs-buy accelerator for username lifecycle management.

For engineering: v1.0.0 provides Laravel-native rules (Username, NotReserved, UniqueUsername), a normalizer/generator, a HasUsername contract and InteractsWithUsername trait, history resolution through route model binding and lookup methods, scheduled pruning via model:prune, post-commit UsernameChanged events, and configurable connection/history table/model. It addresses collision retries and reserved-name checks that are easy to underestimate. Adoption requires schema/index work and scheduling, but the package is intentionally scoped: engineering remains responsible for authentication, authorization, profile UX, and any moderation beyond the reserved list.

Recommendation: Adopt for products where usernames are public identifiers and Laravel is the stack; pilot in an account-settings or onboarding flow first, then standardize validation, history, and event handling across the product.

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.
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect
youbar/easy-crud
c-point-labs/laravel-hostyourai
dbravoan/dbcms-admin-theme-dbcms
dbravoan/dbcms-theme-db-cyber
dbravoan/dbcms-blocks-basic
dbravoan/dbcms-module-content-audit
dbravoan/dbcms-module-ai-assistant
paygate-to/paygate-php
padosoft/askmydocs-connector-base
defstudio/supercharged-carbon
bernskioldmedia/laravel-matomo