Download the PHP package gsferro/starter-kit-easy without Composer

On this page you can find all versions of the php package gsferro/starter-kit-easy. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package starter-kit-easy

Starter Kit Easy

Packagist Downloads Plumb Testes PHP Filament

🇧🇷 Português · 🇺🇸 English

Starter kit Laravel 13 + Filament 5 pronto para uso. Um comando cria o projeto, instala tudo, migra, popula o banco e entrega três painéis funcionando: negócio, administração e infraestrutura.

Não há passo manual: o create-project já cria o .env, gera a APP_KEY, cria o banco, roda as migrations, semeia papéis/permissões/usuário, publica os assets do Filament e faz o build do front-end. Ao final ele imprime as URLs e o login inicial.

Antes de tocar no banco, ele pergunta cinco coisas — como o laravel new faz:

Pergunta Padrão
1 Nome do projeto o nome da pasta
2 Banco de dados SQLite · PostgreSQL (recomendado: é o único com pgvector, exigido pelas funções de IA local) · MySQL
3 E-mail e senha do administrador [email protected] / password
4 Cor primária dos painéis o padrão do Filament
5 Multi-organização (multi-tenancy) desligada

Enter em tudo instala exatamente como antes — nenhuma pergunta é obrigatória, e a primeira delas é "personalizar agora?", que pula todas de uma vez. Sem terminal (CI, Docker, --no-interaction) nada é perguntado. Ao final o instalador mostra o resumo do que mudou, o que continua sendo editado à mão, e oferece rodar os testes do kit.

No Windows as perguntas não aparecem, e isso não é bug do kit. Medido nos dois shells, PowerShell e Git Bash: o Composer nunca liga TTY em Windows — ProcessExecutor::runProcess() descarta o modo TTY quando Platform::isWindows(), porque o symfony/process lançaria TTY mode is not supported on Windows platform. O artisan recebe pipes, e o instalador se pula pelo próprio guarda de terminal, avisando na tela.

O que fazer, e a ordem importa:

Rode logo depois de instalar, com o banco ainda só com os dados de seed: aí o --force é inócuo. Mais tarde ele é destrutivo, porque apaga o SQLite antes de perguntar.

Se já tem dado no banco e quer só o nome e a cor:

As outras três perguntas não têm versão não destrutiva, e o comando explica por quê: banco e multi-organização exigem recriar (as tabelas de permissão só nascem com a coluna de contexto antes do migrate), e as credenciais do administrador não são sincronizadas pelo seeder — ele garante que exista um administrador, e não que ele espelhe o .env, porque roda em todo db:seed e sobrescrever ali reverteria a senha trocada à mão.

Para trocar e-mail ou senha do administrador, o caminho é deliberado:

Ele pede confirmação, nunca ecoa a senha, recusa e-mail que já pertence a outra conta e para se houver mais de um master_global — em vez de escolher um por ordenação. A tela de perfil do painel também serve.

Em Linux, macOS e WSL as perguntas aparecem no create-project e nada disso é necessário.

A multi-organização é o item que mais compensa decidir agora: ligada na instalação, ela custa zero; ligada depois, o kit:tenancy recria o banco (as tabelas de permissão só nascem com a coluna de contexto se a flag estiver ativa antes do migrate).

Instalação do starter-kit-easy em um comando

Prefere clonar? O mesmo instalador roda sozinho:

Acesso de demonstração

O seeder cria um usuário master que já entra nos três painéis:

Usuário [email protected]
Senha password
Papel master_global (vence qualquer permissão via Gate::before)

Entre por /app, /admin ou /infra — a mesma sessão vale para os três, e o menu do usuário troca de painel.

⚠️ Troque a senha antes de expor o ambiente. Para nascer com outra credencial, defina KIT_ADMIN_EMAIL, KIT_ADMIN_PASSWORD e KIT_ADMIN_NAME no .env antes de rodar a instalação (os valores ficam em config/kit.php). Num projeto já instalado, troque pelo próprio painel em /admin/users ou em Meu perfil.

Para testar o recorte de acesso, crie um usuário só com o papel admin ou infra: ele entra no painel correspondente e toma 403 no outro.

Os três painéis

Painel URL Para quê Quem entra
App /app A operação do negócio. Vem vazio de propósito — é aqui que seu projeto nasce master_global, panel_user, admin_app (com tenancy)
Admin /admin Usuários, papéis e permissões (Shield), catálogo de agentes de IA, autoria de onboarding master_global, admin
Infra /infra Health checks, backups, filas, logs, exceções, trilha de e-mails, lixeira, auditoria, caches, comandos, Pulse, custos de IA master_global, infra

Quem entra vem do papel, não de uma lista no código. Cada papel declara em qual painel vale, na coluna roles.painel — é o campo Painel na tela /admin → Papéis. App\Models\User::canAccessPanel() compara essa coluna com o painel que está sendo aberto. Criar um papel e escolher o painel dele é o ato de dar acesso.

Nulo não é coringa: papel sem painel só carrega permissões e não abre painel algum. O papel master_global entra nos três de outro jeito — ele vence qualquer gate via Gate::before (App\Providers\KitServiceProvider), sem precisar de permissions no banco, e o canAccessPanel() o libera antes de olhar a coluna.

Nos painéis sem tenancy (/admin, /infra) o papel precisa estar atribuído no contexto global: ser admin dentro de uma organização não é credencial para administrar a instalação. No /app vale o papel em qualquer organização — qual delas você abre é decidido depois, por canAccessTenant().

O badge do menu do usuário mostra o papel da organização ABERTA. Quem pertence a mais de uma pode ter papéis diferentes em cada — panel_user numa, admin_app noutra —, e o badge acompanha a troca de organização. Sem papel na organização aberta, não há badge: entrar no painel não depende da organização (é o parágrafo acima), mas a exibição sim. Nos painéis sem tenancy nada muda, porque lá não há organização corrente.

Com o modo multi-tenant ligado, o App vira /app/{tenant} e passa a mostrar só os dados do tenant selecionado. Admin e Infra seguem globais.

Separar admin de infra é o ponto do kit: quem administra usuários não precisa (nem deve) enxergar logs, filas e comandos operacionais, e vice-versa.

Como cada um se parece

Login Administração
Tela de login Painel admin
Auth Designer em duas colunas — a arte mostra o nome da aplicação Usuários, papéis, agentes de IA e indicadores de administração
Infraestrutura Negócio
Painel infra Painel app
Saúde, filas, trilhas, comandos e custos de IA — agrupados em Observabilidade, IA, Trilhas e Sistema Vazio de propósito: é onde o seu projeto nasce

Mais telas: saúde da aplicação · usuários · permissões (Shield) · catálogo de agentes de IA · central de comandos · busca ⌘K · acesso negado

Nossos números

Não é vitrine: é o inventário de tudo que já existe, e o que você não vai precisar escrever.

/app /admin /infra Total
Telas navegáveis 14 31 28 73
Resources 4 8 8 20
Páginas próprias 5 5 13 23
Widgets 1 9 19 29
Rotas GET 23 38 34 95

O /app é o menor de propósito — ele nasce vazio, porque é onde o seu projeto entra. Os outros dois já vêm completos.

O critério de cada linha, para que os números sejam auditáveis. Tela navegável é rota GET do painel com nome de rota, descontadas as de autenticação, os endpoints que devolvem JSON e os redirects. Páginas próprias é $painel->getPages(), sem exclusão. Rotas GET conta tudo sob o caminho do painel, inclusive autenticação e redirect. Widgets é $painel->getWidgets() — widget de painel; os 6 widgets de resource de Tenants/Widgets/ não entram, e por isso um ls dá um número maior. Medido com kit.tenancy.enabled = false; com tenancy ligada as rotas do /app ganham o prefixo da organização.

Até a v0.36.1 a linha Telas navegáveis não tinha critério declarado e não era falsificável — ela ficou parada em 12 / 28 / 27 desde 18/08/2026 e atravessou um fact-check inteiro sem ser corrigida, porque não havia como conferi-la. Agora as cinco linhas são travadas por tests/Kit/SiteDeDocumentacaoTest.php.

Fundação
Pacotes de produção 58
Pacotes de desenvolvimento 19
Migrations 60
Policies 16
Comandos kit:* 8
Qualidade
Casos de teste (Kit + Tenancy, medidos em 2026-09-08) 2.226, com 7.428 asserções
Telas varridas em navegador real 55
Arquivos de teste 151 em Kit + Tenancy (177 no total)
PHPStan level 7, zero erros
FilaCheck 17 regras, todas passando
Documentação
Documentos de referência (wikis/) 10
Features especificadas (wikis/specs/) 66
Project rules para agentes de IA (.ai/rules/, sem o índice) 18

O detalhamento saiu daqui e está no site: Referência e Começar.

O que já vem pronto

Porta de entrada

Administração e segurança

Observabilidade e manutenção (painel infra)

IA (opcional, local por padrão)

Produtividade

A densidade do layout, na mesma tela

Confortável (padrão) Compacto Denso
Densidade confortável Densidade compacta Densidade densa

Repare na coluna de ações: no confortável ela é cortada em "Edi…"; no denso cabe inteira. Apertar não é só ganhar altura — é deixar de esconder conteúdo.

Documentação completa

O que antes vivia aqui — e eram mais de duas mil linhas — agora tem site próprio, com busca e navegação: https://gsferro.github.io/filament-starter-kit-easy/pt/

Grupo O que tem lá
Começar instalação avançada, banco, comandos, personalização, e como atualizar um projeto que já nasceu do kit
Autenticação convites, registro aberto, login social, proteção anti-robô, estados do usuário
Recursos multi-tenancy, anexos e mídia, import/export CSV, trilhas do /infra, configurações do kit, hub de cartões, DTO com Laravel Data
Operação agentes de IA, roteiro completo de features, convenções, o que fazer depois de criar um Resource
Referência qualidade de código, busca e idioma, os 77 pacotes instalados

A versão em inglês fica em https://gsferro.github.io/filament-starter-kit-easy/en/.

Futuras melhorias

O roadmap do kit registra o que já foi olhado e decidiu-se adiar, com o motivo e, quando houve, a medição que sustentou a decisão: preferências de aparência por usuário, o tema compacto pago da Filament, e o gatilho que aposenta a implementação atual de densidade.

Ele vem junto com o seu projeto de propósito — é o futuro do kit, não o do seu projeto, e serve para você não gastar uma tarde reavaliando do zero algo que já tem número registrado.

Requisitos

Banco de dados

A instalação pergunta — SQLite, PostgreSQL ou MySQL. O padrão é SQLite, para não depender de nada.

PostgreSQL é o recomendado, e por um motivo funcional: ele é o único que traz pgvector, de que dependem as funções de IA local que usam busca semântica (embeddings). Com SQLite ou MySQL o resto do kit roda igual — só essas funções ficam indisponíveis.

Postgres e MySQL têm container no kit — o MySQL em profile próprio, porque a instalação escolhe um banco só. Os comandos estão na seção Docker.

Escolhendo Postgres na instalação, o .env já sai com o bloco que o docker-compose.yml lê, e falta só subir o container. Se ele não estiver de pé na hora da instalação, o kit avisa, pula as migrations e diz o comando para refazer:

Para trocar depois da instalação, suba os containers e copie as variáveis:

Docker

Tudo é opt-in por profile. Um container por feature:

Serviço Porta Profile
PostgreSQL 17 + pgvector 5432 base
MySQL 8 3306 mysql
Redis 7 (só cache) 6379 base
llama.cpp (chat) 8080 ai
llama.cpp (embeddings) 8081 ai
Mailpit 1025 / 8025 mail
App (nginx + php-fpm) 8000 app
Reverb (WebSocket) 8090 app, realtime

O Reverb usa 8090 e não o default 8080 para não colidir com o llama.cpp.

Nenhum serviço tem container_name fixo: o prefixo vem de COMPOSE_PROJECT_NAME, que o kit:install grava com o nome do seu projeto. Detalhes no site.

Endereço local por nome, em vez de IP e porta

Dá para abrir o projeto em http://meu-projeto.test no lugar de http://127.0.0.1:8000: custa uma linha no arquivo hosts da máquina e duas chaves no .env. Nenhum arquivo versionado muda, a adoção é individual e quem não fizer nada continua em http://localhost:8000. Receita completa, com a armadilha de elevação no Windows.

O kit:install oferece fazer isso no fim da instalação: ele sugere o domínio a partir do nome que você escolheu, escreve a linha no hosts (pedindo elevação no Windows) e ajusta a APP_URL. É opt-in, não depende de flag nenhuma, e recusar deixa tudo como sempre foi. Domínio fora dos sufixos reservados ao uso local (.test, .localhost, .example, .invalid) pede um sim a mais, porque apontar um domínio real para 127.0.0.1 derruba o acesso ao site de verdade nesta máquina.

Atualizando a stack na máquina que a hospeda

./deploy_docker_local.sh roda no host dos containers (não na máquina de desenvolvimento) e faz a sequência inteira: git pull, rebuild da imagem, --profile app up -d, migrations, optimize:clear, health check em /up e sonda TCP do Reverb. A saída fica em storage/logs/deploy_docker_local.log.

O rebuild vem depois do pull porque a imagem é self-contained (o código é assado nela) — rebuild antes reassa o código velho. E como ele recria reverb e pulse, que estão no mesmo profile app, não há comando de restart à parte: processo long-running não vê código novo sem reiniciar.

--recreate acrescenta --force-recreate, e é necessário quando o .env mudou: o Compose lê o env_file na criação do container, então um container já existente mantém os valores antigos. Se o .env.example mudou no pull, o script avisa.

Comandos

Personalize seu projeto

Os cinco primeiros o instalador já pergunta — a lista abaixo é para mudar depois, ou para quem pulou as perguntas.

# O quê Onde Perguntado na instalação?
1 Nome APP_NAME no .env ✅
2 Banco de dados bloco DB_* no .env ✅
3 Credenciais do seeder KIT_ADMIN_EMAIL / KIT_ADMIN_PASSWORD no .env ✅
4 Cor primária KIT_COR_PRIMARIA no .env (nome de uma cor da paleta do Filament), ou KIT_COR_PRIMARIA_HEX com um hexadecimal livre — o hex vence o nome quando os dois estão preenchidos ✅
5 Multi-tenancy php artisan kit:tenancy, e o termo exibido em config/kit.php → tenancy.label ✅
6 Arte do login nenhuma: ela mostra o nome da aplicação (APP_NAME) sozinha. Para trocar por uma imagem sua, envie em /admin/configuracoes-da-aplicacao ✅ (pelo nome)
7 Acesso aos painéis o papel de cada usuário (/admin → Papéis, campo Painel); a regra que o lê é App\Models\User::canAccessPanel() —
8 Matriz de permissões database/seeders/PapeisSeeder.php —
9 Health checks KitServiceProvider::configureHealthChecks() —
10 Comandos da UI config/command-center.php —
11 Backups destino e agenda em config/backup.php —
12 Agente de IA /admin → Agentes de IA (ou database/seeders/AssistenteSeeder.php) —
13 Idiomas do painel config/kit.php → idiomas (lista de locales; com um só, o seletor não aparece) —
14 Retenção das trilhas KIT_RETENCAO_EXCECOES_DIAS / KIT_RETENCAO_EMAILS_DIAS no .env —
15 Disco da mídia MEDIA_DISK no .env (local por padrão — privado, servido por URL assinada) php artisan kit:midia-privada migra a mídia já gravada em disco público
16 Import e export CSV a Action em cada app/Filament/**/Pages/List*.php (ligada ou comentada); a permissão em config/filament-shield.php → policies.methods; a retenção do histórico em KIT_RETENCAO_IMPORTACOES_DIAS / KIT_RETENCAO_EXPORTACOES_DIAS no .env ressemeie ShieldPermissionsSeeder + PapeisSeeder depois de mexer no config

Os onze últimos não entram nas perguntas porque são código ou dado de tela, não um valor que caiba num prompt de terminal. O instalador os lista no resumo final, com o arquivo de cada um.

⚠️ O item 5 é o único que não é "edite um arquivo" depois de instalado: o kit:tenancy roda migrate:fresh --seed e apaga os dados. Ele exige árvore git limpa e confirmação explícita. Respondido na instalação, ele não apaga nada — o banco ainda nem existe, e é essa a hora certa de decidir.

A cor primária vale para os três painéis. Com o modo multi-tenant ligado, a cor de cada organização vence esta dentro de /app/{slug} — o /admin e o /infra continuam com a do projeto. Para uma paleta completa, e não só a primary, o caminho continua sendo ->colors([...]) em cada app/Providers/Filament/*PanelProvider.php.

Atualizando um projeto que já nasceu do kit

O kit é um ponto de partida, não uma dependência. Depois do create-project o projeto é seu: você renomeia painéis, muda canAccessPanel(), edita seeders. Por isso não existe um kit:update que sobrescreve arquivos — ele reescreveria justamente o que você personalizou, e um starter kit que estraga o projeto do usuário não serve para nada.

O que muda separa-se em três camadas, e cada uma tem um caminho próprio:

Camada O que é Como atualizar
Dependências Filament, plugins, Laravel composer update — é a maior parte das melhorias e chega sozinha
Cola do kit providers, traits, widgets, views de erro diff manual contra a tag nova (abaixo)
Seu negócio tudo que você escreveu nunca é tocado

Solução de problemas

Licença

MIT.


All versions of starter-kit-easy with dependencies

PHP Build Version
Package Version
Requires php Version ^8.4
anselmokossa/filament-sentinel Version ^1.0
asmit/resized-column Version ^4.0
awcodes/filament-badgeable-column Version ^4.2
bezhansalleh/filament-exceptions Version ^4.2
bezhansalleh/filament-language-switch Version ^5.0
bezhansalleh/filament-panel-switch Version ^3.1
bezhansalleh/filament-shield Version ^4.2
brimham/filament-backup-monitor Version ^0.1
caresome/filament-auth-designer Version ^3.1
cms-multi/filament-clear-cache Version ^3.0
croustibat/filament-jobs-monitor Version ^4.5
ddr/filament-captcha Version ^1.1
dotswan/filament-laravel-pulse Version ^2.2
filament/filament Version ^5.8.1
filament/spatie-laravel-media-library-plugin Version ^5.7
filament/spatie-laravel-settings-plugin Version ^5.6
flowframe/laravel-trend Version ^0.5
fomvasss/laravel-ai-tasks Version ^3.11
gsferro/filament-odometer-easy Version ^1.2
gsferro/filament-stat-plus-easy Version ^1.0
gsferro/odometer-easy Version ^1.0
harvirsidhu/filament-cards Version ^1.0
jeffgreco13/filament-breezy Version ^3.2
laboiteacode/filament-dashboard-widgets Version ^1.0
laboiteacode/filament-dependency-graph Version ^1.1
laboiteacode/filament-logs-explorer Version ^1.0
lara-zeus/progress Version ^3.0
laravel/ai Version ^0.10
laravel/framework Version ^13.17
laravel/pulse Version ^1.8
laravel/reverb Version ^1.0
laravel/socialite Version ^5.30
laravel/tinker Version ^3.0
leandrocfe/filament-apex-charts Version ^5.0
livewire/blaze Version ^1.0
marjose123/filament-lockscreen Version ^3.4
mddev31/filament-dynamic-dashboard Version ^1.0
mike-bronner/laravel-model-caching Version ^13.1
mominalzaraa/filament-composer-release-notifier Version ^1.0
mortalkiller/filament-page-header Version ^2.1.5
owen-it/laravel-auditing Version ^14.0
predis/predis Version ^3.5
prodstarter/filament-notification-center Version ^1.0
promethys/revive Version ^3.1
pxlrbt/filament-environment-indicator Version ^3.5
shuvroroy/filament-spatie-laravel-health Version ^3.3
solution-forest/filament-simplelightbox Version ^1.0
spatie/laravel-backup Version ^10.3
spatie/laravel-data Version ^4.23
spatie/laravel-settings Version ^3.9
ssbityukov/filament-command-center Version ^1.0
stechstudio/filament-impersonate Version ^5.5
syriable/filament-activitylog Version ^0.1
tapp/filament-auditing Version ^4.0
tapp/filament-authentication-log Version ^5.0
tapp/filament-maillog Version ^2.2
wallacemartinss/filament-onboarding Version ^2.1
wezlo/filament-search-spotlight Version ^1.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package gsferro/starter-kit-easy contains the following files

Loading the files please wait ...