PHPackages                             jeffersongoncalves/teamkit - 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. [Framework](/categories/framework)
4. /
5. jeffersongoncalves/teamkit

ActiveProject[Framework](/categories/framework)

jeffersongoncalves/teamkit
==========================

TeamKit starter kit built on Laravel 12.x and Filament 3.x with a ready-to-use multi-panel structure.

3.3.49(2mo ago)40MITPHPPHP ^8.2CI passing

Since Sep 13Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/jeffersongoncalves/teamkit)[ Packagist](https://packagist.org/packages/jeffersongoncalves/teamkit)[ GitHub Sponsors](https://github.com/jeffersongoncalves)[ RSS](/packages/jeffersongoncalves-teamkit/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (7)Dependencies (17)Versions (11)Used By (0)

[![TeamKit](https://raw.githubusercontent.com/jeffersongoncalves/teamkit/main/art/jeffersongoncalves-teamkit.png)](https://raw.githubusercontent.com/jeffersongoncalves/teamkit/main/art/jeffersongoncalves-teamkit.png)

Teamkit Start Kit Filament 3.x and Laravel 12.x
===============================================

[](#teamkit-start-kit-filament-3x-and-laravel-12x)

About Teamkit
-------------

[](#about-teamkit)

Teamkit is a robust starter kit built on Laravel 12.x and Filament 3.x, designed to accelerate the development of modern web applications with a ready-to-use multi-panel structure.

Features
--------

[](#features)

- **Laravel 12.x** - The latest version of the most elegant PHP framework
- **Filament 3.x** - Powerful and flexible admin framework
- **Multi-Panel Structure** - Includes three pre-configured panels:
    - Admin Panel (`/admin`) - For system administrators
    - App Panel (`/app`) - For authenticated application users
    - Public Panel (frontend interface) - For visitors
- **Teams (Multitenancy)** - Team management with registration, profile, and team switching directly in the App panel
- **Environment Configuration** - Centralized configuration through the `config/teamkit.php` file

System Requirements
-------------------

[](#system-requirements)

- PHP 8.2 or higher
- Composer
- Node.js and PNPM

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

[](#installation)

Clone the repository

```
laravel new my-app --using=jeffersongoncalves/teamkit --database=mysql
```

### Using FilaKit CLI

[](#using-filakit-cli)

Or use [FilaKit CLI](https://github.com/jeffersongoncalves/filakit-cli) for a simplified setup:

```
filakit new my-app --kit=jeffersongoncalves/teamkit
```

> Install FilaKit CLI: `composer global require jeffersongoncalves/filakit-cli`

### Easy Installation

[](#easy-installation)

Teamkit can be easily installed using the following command:

```
php install.php
```

This command automates the installation process by:

- Installing Composer dependencies
- Setting up the environment file
- Generating application key
- Setting up the database
- Running migrations
- Installing Node.js dependencies
- Building assets
- Configuring Herd (if used)

### Manual Installation

[](#manual-installation)

Install JavaScript dependencies

```
pnpm install
```

Install Composer dependencies

```
composer install
```

Set up environment

```
cp .env.example .env
php artisan key:generate
```

Configure your database in the .env file

Run migrations

```
php artisan migrate
```

Run the server

```
php artisan serve
```

Installation with Docker
------------------------

[](#installation-with-docker)

Clone the repository

```
laravel new my-app --using=jeffersongoncalves/teamkit --database=mysql
```

Move into the project directory

```
cd my-app
```

Install Composer dependencies

```
composer install
```

Set up environment

```
cp .env.example .env
```

Configuring custom ports may be necessary if you have other services running on the same ports.

```
# Application Port (ex: 8080)
APP_PORT=8080

# MySQL Port (ex: 3306)
FORWARD_DB_PORT=3306

# Redis Port (ex: 6379)
FORWARD_REDIS_PORT=6379

# Mailpit Port (ex: 1025)
FORWARD_MAILPIT_PORT=1025
```

Start the Sail containers

```
./vendor/bin/sail up -d
```

You won’t need to run `php artisan serve`, as Laravel Sail automatically handles the development server within the container.

Attach to the application container

```
./vendor/bin/sail shell
```

Generate the application key

```
php artisan key:generate
```

Install JavaScript dependencies

```
pnpm install
```

Authentication Structure
------------------------

[](#authentication-structure)

Teamkit comes pre-configured with a custom authentication system that supports different types of users:

- `Admin` - For administrative panel access
- `User` - For application panel access

Teams – Multitenancy in the App Panel
-------------------------------------

[](#teams--multitenancy-in-the-app-panel)

Teamkit includes native support for Teams (multitenancy) in the application panel (`/app`). This allows you to isolate data by team and provide a multi‑company/multi‑project experience.

Key points:

- Team model: `App\Models\Team` with fields `user_id` (owner), `name`, and `personal_team`.
- Current user and current team: the user has `current_team_id` and helper methods for team management.
- Tenancy in Filament: the App panel is configured with tenant `Team::class`, tenant route prefix `team`, a team registration page, and a team profile page.

URLs and navigation:

- App panel: `/app`
- Team registration: `/app/team/register` (also accessible via the user menu under Tenancy)
- Team profile: accessible from the Tenancy menu when a team is selected (e.g., `/app/team/{id}/profile` – managed by Filament)
- Team switcher: appears at the top of the panel when the user belongs to 2+ teams.

Creating and managing teams:

- Register a team: at `/app/team/register`, enter the team name. The authenticated user becomes the team owner (`user_id`).
- Edit team profile: via the “Team profile” page, allowing you to change the team `name`.
- Switch teams: use the switcher at the top of Filament. Programmatically: `$user->switchTeam($team)`.

User ↔ team association:

- Team owner: the creator is the owner (field `user_id`).
- Members: the many‑to‑many relationship `User::teams()`/`Team::users()` uses the pivot represented by `App\Models\Membership`.
- Access rules: `User::canAccessTenant($tenant)` validates whether the user belongs to the team (owner or member). The `User::getTenants()` method returns the list for the switcher.

Team‑scoped data:

- Middleware: `App\Http\Middleware\ApplyTenantScopes` is prepared for you to apply global scopes to your models, for example: ```
    // Example (uncomment and adapt):
    // SomeModel::addGlobalScope(
    //    fn (Builder $query) => $query->whereBelongsTo(Filament::getTenant()),
    // );
    ```
- Adapt your Resources/queries to always consider the current tenant when applicable.

Relevant migrations:

- `database/migrations/0001_01_01_000005_create_teams_table.php`
    - Creates the `teams` table with: `id`, `user_id` (indexed), `name`, and `personal_team` (boolean), plus timestamps.

Filament pages related to Teams:

- Registration: `App\Filament\App\Pages\Tenancy\RegisterTeam` (uses `Filament\Pages\Tenancy\RegisterTenant`).
- Profile: `App\Filament\App\Pages\Tenancy\EditTeamProfile` (uses `Filament\Pages\Tenancy\EditTenantProfile`).

App panel configuration (summary):

- `App\Providers\Filament\AppPanelProvider`
    - `->tenant(Team::class)`
    - `->tenantRoutePrefix('team')`
    - `->tenantRegistration(RegisterTeam::class)`
    - `->tenantProfile(EditTeamProfile::class)`
    - `->tenantMiddleware([ApplyTenantScopes::class], isPersistent: true)`

Tips:

- When creating new Models/Resources that should be isolated by team, remember to relate them to `Team` and apply the scope in the middleware or in your queries.
- If you need to define a default team, `User::currentTeam` is resolved automatically if `current_team_id` is empty (it falls back to the personal team if it exists).

### Team Invitations (New)

[](#team-invitations-new)

Teamkit now includes a built‑in Team Invitations flow to add members to a team by email.

What you can do:

- Invite users to a team (Admin panel)
- Allow invited users to Accept or Cancel invitations (App panel)
- Prevent duplicate or invalid invitations via built‑in validation

Where to manage invitations:

- Admin panel: Team Invitations resource
    - Create an invitation by selecting a Team and entering the invitee's email address.
    - Per‑team uniqueness: the same email cannot be invited twice to the same team.
    - Safety checks: you cannot invite a user who is already the team owner or an existing team member. In these cases you will see "The email has already been taken.".
- App panel: Invitations page (via the user menu)
    - Invited users see a list of invitations addressed to the currently authenticated email.
    - Actions:
        - Accept: adds the user to the team and redirects to that team's dashboard in the App panel.
        - Cancel: removes the pending invitation.
    - Both actions show success notifications.

Notes and implementation details:

- The App panel shows a user menu item named "Invitations" when a team context exists. It opens the invitations list for the signed‑in user.
- After accepting an invitation, the user is redirected to the App dashboard for the invited team, effectively switching context to that team.
- Relevant classes (for reference):
    - App\\Filament\\App\\Pages\\TeamInvitationAccept (App panel)
    - App\\Filament\\Admin\\Resources\\TeamInvitationResource (Admin panel)
    - App\\Models\\TeamInvitation (model)
- Translations are available (en, pt\_BR, es) for labels and notifications.

Development
-----------

[](#development)

```
# Run the development server with logs, queues and asset compilation
composer dev

# Or run each component separately
php artisan serve
php artisan queue:listen --tries=1
pnpm run dev
```

Customization
-------------

[](#customization)

### Panel Configuration

[](#panel-configuration)

Panels can be customized through their respective providers:

- `app/Providers/Filament/AdminPanelProvider.php`
- `app/Providers/Filament/AppPanelProvider.php`
- `app/Providers/Filament/PublicPanelProvider.php`

Alternatively, these settings are also consolidated in the `config/teamkit.php` file for easier management.

### Themes and Colors

[](#themes-and-colors)

Each panel can have its own color scheme, which can be easily modified in the corresponding Provider files or in the `teamkit.php` configuration file.

### Configuration File

[](#configuration-file)

The `config/teamkit.php` file centralizes the configuration of the starter kit, including:

- Panel routes
- Middleware for each panel
- Branding options (logo, colors)
- Authentication guards

Resources
---------

[](#resources)

Teamkit includes support for:

- User and admin management
- Multi-guard authentication system
- Tailwind CSS integration
- Database queue configuration
- Customizable panel routing and branding

License
-------

[](#license)

This project is licensed under the [MIT License](LICENSE).

Credits
-------

[](#credits)

Developed by [Jefferson Gonçalves](https://github.com/jeffersongoncalves).

###  Health Score

41

—

FairBetter than 89% of packages

Maintenance89

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

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 ~27 days

Total

7

Last Release

77d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/411493?v=4)[Jefferson Gonçalves](/maintainers/jeffersongoncalves)[@jeffersongoncalves](https://github.com/jeffersongoncalves)

---

Top Contributors

[![jeffersongoncalves](https://avatars.githubusercontent.com/u/411493?v=4)](https://github.com/jeffersongoncalves "jeffersongoncalves (102 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (72 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (45 commits)")

---

Tags

filamentfilament-starter-kitfilament-v3laravellaravel-12laravel-starter-kitlivewirelivewire-v3multi-panelmulti-tenancyphpstarter-kittailwindcssteamsframeworklaravelfilamentkitstarter-kitlaravel-starter-kitstart-kitfilament-starter-kit

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/jeffersongoncalves-teamkit/health.svg)

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

###  Alternatives

[raugadh/fila-starter

Laravel Filament Starter.

614.9k](/packages/raugadh-fila-starter)[codewithdennis/larament

Larament is a time-saving starter kit to quickly launch Laravel 13.x projects. It includes FilamentPHP 5.x pre-installed and configured, along with additional tools and features to streamline your development workflow.

3691.5k](/packages/codewithdennis-larament)

PHPackages © 2026

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