lasserafn/php-initial-avatar-generator
Generate initial-based avatar images in PHP. Create colorful letter avatars (e.g., user initials) for profiles and placeholders, with configurable size, font, colors, and shapes. Lightweight, framework-agnostic, easy to integrate in any app.
config/app.php or AppServiceProvider). Minimal boilerplate:
$this->app->bind(AvatarGenerator::class, function ($app) {
return new AvatarGenerator(config('avatar.colors'));
});
{{ avatar('John Doe', 'svg') }} <!-- Inline SVG -->
{{ avatar('Jane Smith', 'url') }} <!-- Public URL -->
avatar('user@email.com')->toArray()) for API responses.Cache::remember) to reduce generation overhead.queue:work) for async generation.laravel-debugbar or Blackfire.io.hash('crc32', $name)).laravel/framework constraints).Str::of($name)->limit(2)).spatie/laravel-avatar.siege or k6.| Component | Compatibility | Notes |
|---|---|---|
| Laravel Core | ✅ 8.0+ (tested up to 11.x) | Check composer.json constraints for exact versions. |
| Frontend | ✅ Blade, Inertia.js, Livewire, API-driven (React/Vue) | SVG/URL outputs work universally. |
| Storage | ✅ Local, S3, Cloudflare R2 | URLs can point to any storage backend. |
| Caching | ✅ Redis, Memcached, Laravel’s file cache | Critical for scaling. |
| Queues | ✅ Database, Redis, Beanstalkd | Offload generation for high-traffic apps. |
| Testing | ✅ Pest, PHPUnit | Mock AvatarGenerator for unit tests. |
composer require lasserafn/php-initial-avatar-generator.use LasserAfn\AvatarGenerator\Facades\Avatar;
Avatar::generate('John Doe')->toSVG(); // Test output
{{ avatar($user->name) }}.return UserResource::make($user)->additional(['avatar_url' => avatar($user->name)->url()]);
Cache::remember:
Cache::remember("avatar_{$user->id}", now()->addHours(1), fn() => avatar($user->name)->url());
AvatarJob::dispatch($user->name)->delay(now()->addMinutes(5));
FallbackAvatarService for edge cases:
public function getAvatar($name) {
try {
return Avatar::generate($name)->url();
} catch (Exception) {
return config('avatar.fallback_url');
}
}
'colors' => [
'primary' => ['#3b82f6', '#1d4ed8'], // blue-500/blue-900
'secondary' => ['#10b981', '#059669'], // emerald-500/emerald-900
],
laravel/framework and PHP version support.config/avatar.php to match brand guidelines.Cache::forget).dd(Avatar::generate($name)->toSVG()) to inspect output.Laravel\Debugbar.k6 to identify bottlenecks.How can I help you explore Laravel packages today?