PHPackages                             laraveldaily/filateams - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. laraveldaily/filateams

ActiveLibrary[Admin Panels](/categories/admin)

laraveldaily/filateams
======================

Team management plugin for Filament, compatible with Laravel starter kit teams.

v0.2(3mo ago)18102↑20%4MITPHPPHP ^8.2CI passing

Since Apr 2Pushed 2mo ago3 watchersCompare

[ Source](https://github.com/LaravelDaily/FilaTeams)[ Packagist](https://packagist.org/packages/laraveldaily/filateams)[ Docs](https://github.com/laraveldaily/filateams)[ RSS](/packages/laraveldaily-filateams/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (8)Versions (3)Used By (0)

FilaTeams
=========

[](#filateams)

Team management plugin for Filament 5. This is the exact implementation of [Laravel 13 Starter Kit Teams](https://www.youtube.com/watch?v=mJtOxawILJk) functionality, just in Filament.

Adds full team functionality — creating teams, switching between them, inviting members, managing roles — wired into Filament's panel with zero configuration on your part.

---

Package Demo
------------

[](#package-demo)

Here's a [7-minute YouTube video with package demo](https://www.youtube.com/watch?v=YlO_6ZI55ag).

For reference, I also have a [33-minute video course on Laravel 13 Teams customizations](https://laraveldaily.com/course/laravel-13-teams).

---

Screenshots
-----------

[](#screenshots)

[![](https://camo.githubusercontent.com/70625244217f01be9cd3ddc258ed1e4c712e5e27ec363e209f9962a5e9598d2c/68747470733a2f2f6c61726176656c6461696c792e636f6d2f75706c6f6164732f323032362f30342f66696c617465616d732d7377697463682d7465616d2e706e67)](https://camo.githubusercontent.com/70625244217f01be9cd3ddc258ed1e4c712e5e27ec363e209f9962a5e9598d2c/68747470733a2f2f6c61726176656c6461696c792e636f6d2f75706c6f6164732f323032362f30342f66696c617465616d732d7377697463682d7465616d2e706e67)

---

[![](https://camo.githubusercontent.com/2f97f1451618c48337600d8557d48de344581b674ea128d5523446e7aee5a919/68747470733a2f2f6c61726176656c6461696c792e636f6d2f75706c6f6164732f323032362f30342f66696c617465616d732d7465616d2d73657474696e67732e706e67)](https://camo.githubusercontent.com/2f97f1451618c48337600d8557d48de344581b674ea128d5523446e7aee5a919/68747470733a2f2f6c61726176656c6461696c792e636f6d2f75706c6f6164732f323032362f30342f66696c617465616d732d7465616d2d73657474696e67732e706e67)

---

[![](https://camo.githubusercontent.com/0a69b6bb7c2b3278c1f2323314b3f26ceb7f42d6a0ace9b94ff89cf7c39093b4/68747470733a2f2f6c61726176656c6461696c792e636f6d2f75706c6f6164732f323032362f30342f66696c617465616d732d696e766974652d757365722e706e67)](https://camo.githubusercontent.com/0a69b6bb7c2b3278c1f2323314b3f26ceb7f42d6a0ace9b94ff89cf7c39093b4/68747470733a2f2f6c61726176656c6461696c792e636f6d2f75706c6f6164732f323032362f30342f66696c617465616d732d696e766974652d757365722e706e67)

---

Requirements
------------

[](#requirements)

- PHP 8.2+
- Laravel 12 or 13
- Filament 5

This package is designed to be installed on a **fresh Filament project**, right after `filament:install --panels`. It creates its own database tables and takes over the panel's tenancy system, so it's best to set it up before building your resources and pages on top.

---

Installation
------------

[](#installation)

### 1. Install via Composer

[](#1-install-via-composer)

```
composer require laraveldaily/filateams
```

### 2. Update your User model

[](#2-update-your-user-model)

Add the `HasTeamMembership` interface and `HasTeams` trait:

```
use LaravelDaily\FilaTeams\Concerns\HasTeams;
use LaravelDaily\FilaTeams\Contracts\HasTeamMembership;

class User extends Authenticatable implements HasTeamMembership
{
    use HasTeams;

    // ... rest of your model
}
```

### 3. Register the plugin in your PanelProvider

[](#3-register-the-plugin-in-your-panelprovider)

```
use LaravelDaily\FilaTeams\FilaTeamsPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        // ... your existing config
        ->registration() // enable if not already
        ->plugin(FilaTeamsPlugin::make());
}
```

### 4. Run migrations

[](#4-run-migrations)

```
php artisan migrate
```

That's it. No additional configuration needed.

---

What you get
------------

[](#what-you-get)

- **Automatic personal team** — when a user registers, a personal team ("{name}'s Team") is created automatically
- **Team switcher** — Filament's built-in tenant switcher lets users switch between their teams
- **Create team** — available at `/admin/new`
- **Team settings page** — at `/admin/{team}/settings`, with sections for:
    - Updating team name
    - Managing members (change roles, remove members, leave team)
    - Inviting new members by email
    - Deleting the team (non-personal teams only, owner only)
- **Email invitations** — invited users receive an email with an accept link
- **Role-based permissions** — Owner, Admin, and Member roles with granular permissions

---

Roles &amp; Permissions
-----------------------

[](#roles--permissions)

PermissionOwnerAdminMemberUpdate team nameYesYes-Delete teamYes--Add/remove membersYes--Change member rolesYes--Create invitationsYesYes-Cancel invitationsYesYes-The built-in roles and permissions can be replaced entirely. Publish the config and point `enums.role` and `enums.permission` to your own string-backed enum classes that implement `TeamRoleContract` and `TeamPermissionContract`:

```
// config/filateams.php
'enums' => [
    'role'       => App\Enums\MyTeamRole::class,
    'permission' => App\Enums\MyTeamPermission::class,
],
```

See [`src/Contracts/TeamRoleContract.php`](src/Contracts/TeamRoleContract.php) for the full interface your custom role enum must satisfy.

---

Invitation flow
---------------

[](#invitation-flow)

1. An Owner or Admin invites a user by email from the team settings page
2. The invited user receives an email with an accept link
3. If they're logged in and the email matches — they're added to the team immediately
4. If they're not logged in — they're redirected to login first, then back to accept
5. Invitations expire after 7 days (configurable)

---

For existing users
------------------

[](#for-existing-users)

If you install the package on a project that already has users, those users won't have teams yet. Create personal teams for them:

```
use App\Models\User;
use LaravelDaily\FilaTeams\Actions\CreateTeam;

$action = new CreateTeam;

User::whereDoesntHave('teams')->each(function ($user) use ($action) {
    $action->handle($user, [
        'name' => $user->name . "'s Team",
        'is_personal' => true,
    ]);
});
```

You can run this in tinker or in a seeder/migration.

---

Configuration
-------------

[](#configuration)

Publish the config file:

```
php artisan vendor:publish --tag=filateams-config
```

This creates `config/filateams.php`:

```
return [
    // Override the role and permission enum classes
    'enums' => [
        'role'       => LaravelDaily\FilaTeams\Enums\TeamRole::class,
        'permission' => LaravelDaily\FilaTeams\Enums\TeamPermission::class,
    ],

    // Override model classes if you need to extend them
    'models' => [
        'team'       => LaravelDaily\FilaTeams\Models\Team::class,
        'membership' => LaravelDaily\FilaTeams\Models\Membership::class,
        'invitation' => LaravelDaily\FilaTeams\Models\TeamInvitation::class,
    ],

    // How long invitations are valid
    'invitation' => [
        'expires_after_days' => 7,
    ],

    // Create a personal team when a user registers
    'create_personal_team_on_registration' => true,
];
```

---

Translations
------------

[](#translations)

To publish the language files to your application:

```
php artisan vendor:publish --tag=filateams-translations
```

This copies the files to `lang/vendor/filateams/` where you can modify existing translations or add new languages by creating a folder named after the locale (e.g. `lang/vendor/filateams/de/filateams.php`).

---

Database schema
---------------

[](#database-schema)

The package creates three tables and adds one column:

**`teams`** — `id`, `name`, `slug` (unique), `is_personal`, `timestamps`, `soft_deletes`

**`team_members`** — `id`, `team_id`, `user_id`, `role`, `timestamps` (unique on `team_id + user_id`)

**`team_invitations`** — `id`, `code` (unique, 64 chars), `team_id`, `email`, `role`, `invited_by`, `expires_at`, `accepted_at`, `timestamps`

**`users`** — adds `current_team_id` (nullable foreign key to teams)

This schema matches the Laravel 13 starter kit exactly.

---

License
-------

[](#license)

MIT

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance83

Actively maintained with recent releases

Popularity23

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 Bus Factor1

Top contributor holds 51.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

90d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/8dfd7abe6d76f60f1fe0b5d24abd419f4945bd41766823f9134bb877bb3f5a34?d=identicon)[Laraveldaily](/maintainers/Laraveldaily)

---

Top Contributors

[![krekas](https://avatars.githubusercontent.com/u/11015977?v=4)](https://github.com/krekas "krekas (15 commits)")[![PovilasKorop](https://avatars.githubusercontent.com/u/1510147?v=4)](https://github.com/PovilasKorop "PovilasKorop (12 commits)")[![luisprmat](https://avatars.githubusercontent.com/u/9275870?v=4)](https://github.com/luisprmat "luisprmat (2 commits)")

---

Tags

laravelmulti-tenancyfilamentTeams

###  Code Quality

TestsPest

Static AnalysisRector

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/laraveldaily-filateams/health.svg)

```
[![Health](https://phpackages.com/badges/laraveldaily-filateams/health.svg)](https://phpackages.com/packages/laraveldaily-filateams)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[laravel/horizon

Dashboard and code-driven configuration for Laravel queues.

4.2k95.4M295](/packages/laravel-horizon)[illuminate/database

The Illuminate Database package.

2.8k54.9M11.5k](/packages/illuminate-database)[laravel/ai

The official AI SDK for Laravel.

1.0k3.2M184](/packages/laravel-ai)[moonshine/moonshine

Laravel administration panel

1.3k253.1k78](/packages/moonshine-moonshine)[bezhansalleh/filament-exceptions

A Simple &amp; Beautiful Pluggable Exception Viewer for FilamentPHP's Admin Panel

196223.8k15](/packages/bezhansalleh-filament-exceptions)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
