Three preconfigured Filament panels: Admin (/admin), App (/app), and public
teamkit — Laravel Starter Template
By jeffersongoncalves
TeamKit is a starter kit built on Laravel and Filament that provides three preconfigured panels—Admin, App, and public—and implements team multi-tenancy, team invitations, and team switching in the App panel.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Preview provided in the project README.
One original preview is available. Open the full image to inspect the design.
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Team multi-tenancy built into the App panel: Team model, Membership intermediate model, team registration and profile pages, and a team switcher
Provides an ApplyTenantScopes middleware to make it easier to add global scopes that filter models by the current tenant
Built-in team invitation flow: create invitations in the Admin panel, accept or cancel in the App panel, with validation for duplicates and invalid invitations
Multi-guard authentication structure that distinguishes between Admin and User user types
Panel routes, middleware, branding, and authentication guards are centralized in config/teamkit.php
Template Details
TeamKit is a Laravel starter project that uses Filament to build its admin interfaces. The repository description states it is based on Laravel 12.x and Filament 3.x (the README says Laravel 13.x; the two are inconsistent, so the exact version is not confirmed here). It provides three preconfigured panels: an Admin panel (/admin) for system administrators, an App panel (/app) for authenticated application users, and a public panel as the guest-facing frontend. The project includes a custom authentication structure that distinguishes between Admin and User user types and supports multiple guards.
Multi-tenancy is concentrated in the App panel: the Team model includes user_id (owner), name, and personal_team fields; users record their current team via current_team_id, and User and Team are linked through a Membership intermediate model in a many-to-many relationship. The App panel is configured with Team as the tenant, a tenant route prefix of team, a team registration page, and a team profile page. When a user belongs to two or more teams, a team switcher appears at the top of the panel. The project provides an ApplyTenantScopes middleware so developers can add global scopes to models to isolate data by team.
The team invitation flow is also built in: the Admin panel's TeamInvitationResource can create invitations by team and email, and validates that the email is unique within the same team and that the team owner or existing members cannot be invited; the App panel's Invitations page lets invitees accept or cancel invitations. After accepting, the user joins the team and is redirected to that team's panel home page. The related labels and notifications provide translations for en, pt_BR, and es.
Installation options include the laravel new command, the FilaKit CLI, an install.php script, manual steps, and a Docker approach based on Laravel Sail. Configuration for panel routes, middleware, branding, and authentication guards is centralized in config/teamkit.php and can also be adjusted in each PanelProvider. System requirements are PHP 8.3 or higher, Composer, Node.js, and PNPM. The project uses the MIT license, and the code may be used, modified, used commercially, and distributed for free, but third-party assets such as demo images, fonts, and icons require separate license verification, and external services such as domains, hosting, and databases may incur additional charges.
Is it right for your project?
Use Cases
- Quickly building a multi-panel Laravel application with both admin management and a user-facing side
- Applications that need to isolate data by team or organization and allow users to create and switch teams
- Adding members to teams via email invitations, with invitees able to accept or cancel themselves
- Needing separate login entry points and permission scopes for administrators and regular users
Suitable For
- Developers building admin or multi-panel applications with Laravel and Filament
- Projects that need a multi-tenant team management foundation
- Teams that want to use MIT-licensed code as a starting point for further development
- Developers who are willing to follow the README steps to install and configure the database and Node dependencies themselves
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
System requirements: PHP 8.3 or higher, Composer, Node.js, and PNPM
- 2
Can be installed with laravel new --using=jeffersongoncalves/teamkit, the FilaKit CLI, or php install.php, or manually by following the README to run composer install, pnpm install, copy .env, generate a key, migrate, and build assets
- 3
The Docker approach is based on Laravel Sail and requires adjusting ports such as APP_PORT, FORWARD_DB_PORT, FORWARD_REDIS_PORT, and FORWARD_MAILPIT_PORT as needed
- 4
During development, composer dev can run the server, queue, and asset compilation together, or you can run php artisan serve, php artisan queue:listen, and pnpm run dev separately
- 5
The README and repository description are inconsistent about the Laravel version; before installing, refer to the repository's dependency manifest
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version in the public repository under the MIT license; the free scope is the code of that version and does not mean external services or third-party assets are free.
Must comply with when using
- The code of this version may be used, modified, used commercially, and distributed for free.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- The runtime requires PHP 8.3 or higher; PHP environments below that version cannot use it.
- Installation and building depend on Composer, Node.js, and PNPM, which must be prepared separately.
- You must configure the database connection yourself (e.g., MySQL); the database service is not included in the project and may incur external costs.
- The optional FilaKit CLI installation method requires globally installing an additional third-party command-line tool.
- With the Docker/Sail approach, port conflicts require adjusting APP_PORT, database, Redis, Mailpit, and other ports yourself.
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
- PHP 8.3 or higher
Original README
- Composer - Node.js and PNPM
Original README
Configure your database in the .env file
Original README
composer global require jeffersongoncalves/filakit-cli
Original README
https://github.com/jeffersongoncalves/teamkit/blob/main/LICENSE.mdhttps://github.com/jeffersongoncalves/teamkit/blob/main/README.mdConfiguring custom ports may be necessary if you have other services running on the same ports.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-01. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- Partly documented · 71 / 100
- Technologies
- Laravel
- Website type
- Starter
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-09-28
- Screenshot last checked
- 2026-10-01
No demo link is recorded. Use the repository instructions to evaluate the project locally; the screenshot alone cannot establish interactive behavior.
The catalog identifies Laravel as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Automatically checked against source and license rules; no manual editorial review.
Inspect the recorded source material
SHA-256: 3cb4a4dca03b4889f90dc535778c084f1a293996eda18d18013af709a29add64
2026-10-01T02:23:13.379Z
Source file / repository<div class="filament-hidden">

</div>
# Teamkit Start Kit Filament 3.x and Laravel 13.x
[](https://buymeacoffee.com/jeffersongoncalves)
## About Teamkit
Teamkit is a robust starter kit built on Laravel 13.x and Filament 3.x, designed to accelerate the development of modern
web applications with a ready-to-use multi-panel structure.
## Features
- **Laravel 13.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
- PHP 8.3 or higher
- Composer
- Node.js and PNPM
## Installation
Clone the repository
``` bash
laravel new my-app --using=jeffersongoncalves/teamkit --database=mysql
```
### Using FilaKit CLI
Or use [FilaKit CLI](https://github.com/jeffersongoncalves/filakit-cli) for a simplified setup:
```bash
filakit new my-app --kit=jeffersongoncalves/teamkit
```
> Install FilaKit CLI: `composer global require jeffersongoncalves/filakit-cli`
### Easy Installation
Teamkit can be easily installed using the following command:
```bash
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
Install JavaScript dependencies
``` bash
pnpm install
```
Install Composer dependencies
``` bash
composer install
```
Set up environment
``` bash
cp .env.example .env
php artisan key:generate
```
Configure your database in the .env file
Run migrations
``` bash
php artisan migrate
```
Build frontend assets
``` bash
pnpm run build
```
Run the server
``` bash
php artisan serve
```
## Installation with Docker
Clone the repository
```bash
laravel new my-app --using=jeffersongoncalves/teamkit --database=mysql
```
Move into the project directory
```bash
cd my-app
```
Install Composer dependencies
```bash
composer install
```
Set up environment
```bash
cp .env.example .env
```
Configuring custom ports may be necessary if you have other services running on the same ports.
```bash
# 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
```bash
./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
```bash
./vendor/bin/sail shell
```
Generate the application key
```bash
php artisan key:generate
```
Install JavaScript dependencies
```bash
pnpm install
```
## 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
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:
```php
// 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)
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
``` bash
# 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
### 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
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
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
Teamkit includes support for:
- User and admin management
- Multi-guard authentication system
- Tailwind CSS integration
- Database queue configuration
- Customizable panel routing and branding
## License
This project is licensed under the [MIT License](LICENSE).
## Credits
Developed by [Jefferson Gonçalves](https://github.com/jeffersongoncalves).
Explore similar templates
Compare previews and descriptions within the same stack and category.

sage
Sage is a WordPress starter theme maintained by Roots, using Laravel Blade components and templates, Vite builds, Tailwind CSS, and built-in block editor support.
Laravel · Starter

wave
Wave is an open-source SaaS starter kit built on Laravel and released under the MIT license.
Laravel · SaaS

filament-starter
A Laravel TALL stack starter template maintained by Log1x, with a preconfigured Filament admin panel and plugins including Curator, Gravatar, Exceptions, Jobs Monitor, Breezy, Peek, and Logger.
Laravel · Starter

electrik
Electrik is a Laravel SaaS starter kit installed as a Composer package, with authentication, teams, Stripe subscription billing, and the Slate 3 interface under the Electrik\ namespace rather than copied into App\.
Laravel · SaaS

php-saas
php-saas is a Laravel-based SaaS starter positioned as an everything-included kit. It generates new projects via a global Composer command and includes authentication with two-factor, API tokens, Stripe and Paddle billing, and project, team, and organization management.
Laravel · SaaS

filament-jetstream
A Laravel starter kit that implements Jetstream-like authentication and account features using Filament's native panels and components. It includes login, registration, two-factor authentication, session management, user profiles, and optional teams and API tokens.
Laravel · Starter
