liberusoftware/profiles-livewire
A Laravel Livewire package for building and managing user profiles. It provides ready-to-use Livewire components for displaying and editing profile details, integrating with your existing auth and user models so you can add profile pages without writing repetitive boilerplate.
This package is a presentation adapter: it is expected to ship Livewire components (and Blade views) that render profile screens, while the business rules, models, and persistence live in a separate domain package (typically liberusoftware/profiles or equivalent). Plan to install both.
Minimum steps:
composer.json for livewire/livewire constraints), plus the core profiles/domain module. Install the domain module first; the adapter is useless alone.composer require liberusoftware/profiles-livewire
Laravel package discovery should register the service provider automatically; verify with php artisan about or by checking bootstrap/cache/packages.php.php artisan vendor:publish --provider="Liberu\Profiles\Livewire\ProfilesLivewireServiceProvider"
Look for config (config/profiles-livewire.php) and views.Livewire::component(...)) and view namespaces.src/Livewire/ (or src/Http/Livewire/) — the component classes and their public properties/events.resources/views/ — the Blade markup, which tells you what CSS framework and layout assumptions are baked in.routes/ — if present, it may auto-register /profile style endpoints; if absent, you wire routes yourself.README.md and composer.json require block — the latter reveals which domain package version this adapter was built against.<livewire:profiles.profile-edit />
(Confirm the exact alias via php artisan livewire:list on Livewire 3, or by reading the provider.) Wrap the page in auth middleware; profile adapters almost always assume an authenticated user.Embed, don't fork. The intended workflow is to mount components inside your own pages rather than copy their markup:
{{-- resources/views/pages/account.blade.php --}}
<x-app-layout>
<livewire:profiles.profile-view :user="auth()->user()" />
<livewire:profiles.profile-edit :user="auth()->user()" />
</x-app-layout>
Pass models explicitly where the component accepts them; this lets you reuse the same component for admin editing of other users instead of only auth()->user().
Route wrapping. If the package doesn't ship routes, create thin ones:
Route::middleware(['auth', 'verified'])->group(function () {
Route::get('/profile', ProfilePage::class)->name('profile');
});
Keep the route file in your app, not the vendor directory, so upgrades stay clean.
Compose with domain actions. Because this is an adapter, treat its components as view-layer controllers. When you need extra behavior (audit logging, notifications, tenant scoping), prefer:
profile-updated) and reacting in your own listeners.Customize via published views, not vendor edits.
php artisan vendor:publish --tag=profiles-livewire-views
Then override the published Blade files. If the package only exposes a view namespace (profiles-livewire::livewire.profile-edit), you can override individual views by placing files at the same path under resources/views/vendor/profiles-livewire/.
Avatar/file uploads. Most profile adapters include an avatar component. Configure the disk explicitly:
// config/filesystems.php
'profiles' => ['driver' => 's3', 'root' => 'avatars', ...],
and check whether the component reads a config key (profiles-livewire.avatar.disk) or hardcodes public. If hardcoded, subclass and override the property.
Testing. Livewire components are cheap to test:
Livewire::actingAs($user)
->test('profiles.profile-edit')
->set('name', 'New Name')
->call('save')
->assertHasNoErrors();
$this->assertDatabaseHas('profiles', ['name' => 'New Name']);
This is the fastest way to discover a component's actual public property names and validation rules — faster than reading source.
Styling. Liberu modules generally assume Tailwind. If your app uses something else (Bootstrap, CSS modules), publish the views and port the classes rather than fighting the vendor markup.
composer.json require for the domain package and install it first.NOASSERTION. That is not "MIT." Before production use, read LICENSE in the repo and confirm the terms with the maintainers. Do not assume permissive licensing."liberusoftware/profiles-livewire": "1.0.0"), vendor the source into review, and write integration tests before relying on it. A future-dated release also suggests metadata problems — verify the tag actually matches the code.$emit/$dispatch, wire:model vs wire:model.live, and @livewireStyles requirements differ. Check the composer constraint and the markup before assuming.<livewire:profiles.profile-edit /> throws "component not found," inspect the provider for Livewire::component('profiles.profile-edit', ProfileEdit::class) calls. Older packages sometimes skip auto-registration; you can register manually in your AppServiceProvider.auth middleware is applied by you. Verify every component either calls $this->authorize() or that your route applies the right policy. Test as an unauthenticated user and as a user editing someone else's profile.resources/views/vendor/profiles/. Check namespace prefixes in the provider before publishing, or you'll silently override the wrong layer.profile-updated or similar, assert the payload shape in a test — minor releases of small packages change these without notice.php artisan livewire:list — confirm the component is registered.php artisan view:clear && php artisan config:clear — stale caches mask publishing mistakes.storage/logs/laravel.log — missing view namespace errors are reported as View [profiles-livewire::...] not found.php artisan route:list --path=profile — confirm routes exist if you expected auto-registration.render() and the save method, then register your subclass under your own alias. This keeps you upgrade-compatible at the class level even when the markup changes.How can I help you explore Laravel packages today?