Estrutura do Projeto - ime-usp-br/laravel_11_starter_kit GitHub Wiki
Estrutura do Projeto
O Projeto Base USP segue a estrutura de diretórios padrão do Laravel 11, que organiza o código de forma lógica e facilita a manutenção. Compreender essa estrutura é fundamental para navegar e estender o projeto.
Visão Geral dos Diretórios Principais
A organização básica dos diretórios é a seguinte:
nome-do-seu-projeto/
├── app/ # Núcleo da aplicação (Models, Controllers, Providers, etc.)
│ ├── Console/
│ ├── Exceptions/
│ ├── Helpers/ # Diretório para funções auxiliares (ex: helpers.php)
│ ├── Http/
│ │ ├── Controllers/ # Controllers (inclui Auth/, Admin/)
│ │ ├── Middleware/ # Middlewares customizados (ex: EnsureEmailIsVerifiedGlobally.php)
│ │ └── Requests/ # Form Requests (inclui Auth/, Admin/)
│ ├── Models/ # Eloquent Models (ex: User.php)
│ ├── Notifications/ # Classes de Notificação (ex: VerifyUserEmail.php)
│ └── Providers/ # Service Providers (AppServiceProvider, AuthServiceProvider, etc.)
├── bootstrap/ # Arquivos de inicialização e cache gerado
│ └── cache/
├── config/ # Arquivos de configuração da aplicação (app.php, auth.php, database.php, etc.)
├── database/ # Arquivos relacionados ao banco de dados
│ ├── factories/ # Factories para gerar dados de teste (UserFactory.php)
│ ├── migrations/ # Arquivos de Migrations para estrutura do DB
│ └── seeders/ # Seeders para popular o DB (DatabaseSeeder.php, RolesAndPermissionsSeeder.php)
├── public/ # Ponto de entrada HTTP (index.php) e assets públicos (compilados)
│ ├── build/ # Assets compilados pelo Vite
│ └── storage/ # Link simbólico para storage/app/public
├── resources/ # Arquivos fonte não compilados
│ ├── css/ # Arquivos CSS fonte (app.css)
│ ├── js/ # Arquivos JavaScript fonte (app.js, bootstrap.js)
│ └── views/ # Arquivos Blade (layouts, components, auth, profile, admin, etc.)
├── routes/ # Definição das rotas
│ ├── api.php
│ ├── auth.php # Rotas de autenticação (Breeze e customizadas)
│ ├── channels.php
│ ├── console.php # Comandos Artisan
│ ├── socialite.php # Rotas do Senha Única (se separadas)
│ └── web.php # Rotas Web (inclui /admin)
├── storage/ # Arquivos gerados pela aplicação
│ ├── app/
│ │ ├── private/ # Diretório para uploads/arquivos privados (exemplo)
│ │ └── public/ # Arquivos acessíveis publicamente via /storage link
│ ├── framework/ # Arquivos de cache, sessions, views compiladas
│ └── logs/ # Arquivos de log
├── tests/ # Testes automatizados
│ ├── Browser/ # Testes Dusk (End-to-End)
│ ├── Feature/ # Testes de Funcionalidade (HTTP)
│ ├── Unit/ # Testes Unitários
│ ├── CreatesApplication.php
│ ├── DuskTestCase.php # TestCase base para Dusk (customizado)
│ └── TestCase.php # TestCase base para PHPUnit
├── vendor/ # Dependências do Composer (gerenciado automaticamente)
├── .editorconfig # Configuração de estilo para editores
├── .env # Arquivo de configuração do ambiente (NÃO versionar!)
├── .env.dusk.local # Configuração específica para testes Dusk
├── .env.example # Exemplo de arquivo .env
├── .env.testing # Configuração específica para testes PHPUnit
├── .gitattributes # Configurações do Git
├── .gitignore # Arquivos/pastas ignorados pelo Git
├── artisan # Utilitário de linha de comando do Laravel
├── composer.json # Dependências PHP (Composer)
├── composer.lock # Lockfile do Composer
├── package-lock.json # Lockfile do NPM
├── package.json # Dependências Node.js (NPM)
├── phpunit.xml # Configuração do PHPUnit
├── postcss.config.js # Configuração do PostCSS
├── tailwind.config.js # Configuração do Tailwind CSS
└── vite.config.js # Configuração do Vite
Localização dos Componentes Chave
- Models:
app/Models/
User.php
: Modelo principal de usuário, com traits para Senha Única e Permissões (Spatie).
- Controllers:
app/Http/Controllers/
Auth/
: Controllers relacionados à autenticação (Login, Registro, Reset de Senha, Verificação de Email, Senha Única, Senha Local USP).Admin/
: Controllers específicos da área administrativa (ex:UserController.php
).ProfileController.php
: Gerencia a edição do perfil do usuário.Controller.php
: Controller base da aplicação.
- Requests (Validação):
app/Http/Requests/
Auth/
: Requests para validação de formulários de autenticação e registro.Admin/
: Requests para validação de formulários administrativos (ex: criação de usuário).ProfileUpdateRequest.php
: Validação da atualização do perfil.
- Views (Blade Templates):
resources/views/
layouts/
: Layouts base da aplicação (app.blade.php
que estende olaravel-usp-theme
,guest.blade.php
).components/
: Componentes Blade reutilizáveis (gerados pelo Breeze, ex: botões, inputs, modal).auth/
: Views relacionadas à autenticação (login, register, forgot-password, verify-email, etc.).profile/
: Views para edição do perfil do usuário (incluindo parciais para cada seção).admin/
: Views específicas da área administrativa (dashboard, lista/criação de usuários).dashboard.blade.php
: View principal do painel do usuário.welcome.blade.php
: Página inicial da aplicação.vendor/
: Views publicadas por pacotes (ex:notifications/email.blade.php
customizada).
- Rotas:
routes/
web.php
: Rotas principais da aplicação web (inclui dashboard, profile e grupo/admin
).auth.php
: Rotas de autenticação geradas pelo Breeze e customizadas (ex: verificação, senha local).console.php
: Comandos Artisan customizados.socialite.php
: (Importante) Rotas específicas para o fluxo OAuth da Senha Única (login, callback, logout, loginAs). Nota: Verificar se este arquivo é criado separadamente ou se as rotas estão emweb.php
no projeto final.
- Migrations:
database/migrations/
- Arquivos para criar e modificar a estrutura do banco de dados (tabelas
users
,password_reset_tokens
,sessions
,cache
,jobs
,failed_jobs
, tabelas dospatie/laravel-permission
, modificações nausers
paracodpes
epassword
nullable).
- Arquivos para criar e modificar a estrutura do banco de dados (tabelas
- Seeders:
database/seeders/
DatabaseSeeder.php
: Seeder principal que chama outros seeders.RolesAndPermissionsSeeder.php
: Cria os papéis e permissões iniciais.
- Configurações:
config/
app.php
: Configurações gerais (nome, env, debug, localept_BR
, timezone).auth.php
: Configuração dos guards e providers de autenticação.database.php
: Conexões com banco de dados.filesystems.php
: Discos de armazenamento (local, public, s3).logging.php
: Canais de log.mail.php
: Configurações de envio de email.queue.php
: Conexões de fila.services.php
: Credenciais para serviços de terceiros (usado implicitamente pelo Socialite).session.php
: Configurações de sessão.laravel-usp-theme.php
: Configuração do menu e aparência do tema USP.permission.php
: Configuração dospatie/laravel-permission
(nomes de tabela, cache, etc.).senhaunica.php
: Configuração douspdev/senhaunica-socialite
(rotas, permissões, admins, etc.).
- Assets Frontend:
resources/css/app.css
: Arquivo principal CSS (importa Tailwind).resources/js/app.js
: Arquivo principal JavaScript (importabootstrap.js
e inicializa Alpine.js).resources/js/bootstrap.js
: Configuração inicial do Axios.
- Helpers:
app/Helpers/helpers.php
- Contém funções auxiliares globais, como
disableValidationIfTesting
. É carregado automaticamente viacomposer.json
(seçãoautoload.files
).
- Contém funções auxiliares globais, como
- Testes:
tests/
Feature/
: Testes que simulam requisições HTTP e verificam respostas e estado da aplicação.Unit/
: Testes para unidades isoladas de código (classes, métodos).Browser/
: Testes End-to-End usando Laravel Dusk.DuskTestCase.php
: Classe base para testes Dusk, customizada para capturar HTML em falhas.TestCase.php
: Classe base para testes PHPUnit.