A Laravel package for adding user-to-team associations with an invitation system to your application.
Teamwork is a Laravel package that adds user-to-team associations with a full-featured invitation system to Laravel applications. It solves the problem of implementing multi-tenancy and team-based collaboration features by providing ready-to-use models, traits, and workflows for team creation, member management, and access control.
Laravel developers building applications that require team-based user organization, such as SaaS platforms, collaboration tools, or multi-tenant systems where users belong to specific groups.
Developers choose Teamwork because it dramatically reduces development time for team features, offers a clean API with traits and facades that integrate naturally with Laravel, and includes advanced capabilities like invitation handling and team-scoped models out of the box.
User to Team associations with invitation system for the Laravel Framework
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The `php artisan make:teamwork` command generates full-stack views, routes, and controllers for team management, similar to Laravel's auth scaffolding, drastically reducing initial setup time.
Uses native Laravel traits like `UserHasTeams` and `UsedByTeams`, along with facades and Eloquent events, ensuring idiomatic code and easy extension within Laravel projects.
Provides a full token-based email invitation system with accept/deny flows, pending invite checks, and event hooks for customizing notifications or side effects.
The `UsedByTeams` trait automatically scopes all Eloquent queries to the user's current team via a `team_id` filter, eliminating repetitive manual scoping in team-based applications.
Exclusively designed for Laravel 6+, with no support for other PHP frameworks or vanilla PHP, making migration away from Laravel difficult.
Relies on a `current_team_id` column in the users table, enforcing that a user can only have one active team at a time, which is restrictive for apps requiring simultaneous multi-team access.
Focuses on ownership and basic membership without any native role or permission system within teams, forcing developers to layer on additional packages like Spatie Laravel Permission for granular access control.
Requires publishing configs, running multiple migrations that alter the users table, and extending base models, which can be overkill for applications needing only basic user-group associations.