Este projeto é um sistema backend desenvolvido em Laravel 12.x para a gestão de serviços fotográficos, materiais, funcionários e registos de eventos (casamentos, batizados, etc).
Foi criado como projeto final do curso de Desenvolvimento de Software, focando-se em boas práticas, segurança e separação de responsabilidades.
- Descrição Geral
- Requisitos
- Instalação
- Geração de PDFs (Snappy)
- Estrutura do Projeto
- Autenticação e Permissões
- Utilização
- Base de Dados e Seeds
- Autores
O sistema permite:
- Gerir funcionários, materiais e serviços fotográficos.
- Controlar avarias e perdas de equipamento.
- Alocar materiais e funcionários a eventos/serviços.
- Registar check-in e check-out de recursos.
- Garantir acesso diferenciado por nível de utilizador (admin, gestor, operador).
- PHP >= 8.2
- Composer
- MySQL ou MariaDB
- Node.js (para assets front-end, se aplicável)
- Laravel 12.x
- Extensão PHP
mbstringedom - wkhtmltopdf (para geração de PDFs com Snappy)
-
Clonar o repositório
git clone <url-do-repo> cd TrabalhoFinalSDEV
-
Instalar dependências
composer install
-
Copiar e configurar variáveis de ambiente
cp .env.example .env # Editar .env conforme a base de dados local -
Gerar chave da aplicação
php artisan key:generate
-
Migrar e popular a base de dados
php artisan migrate --seed
-
(Opcional) Compilar assets front-end
npm install npm run build
-
Iniciar o servidor
php artisan serve
Este projeto utiliza a biblioteca Snappy para gerar PDFs (ex: relatórios de serviços).
-
Instalar a dependência via Composer:
composer require barryvdh/laravel-snappy
-
Instalar o
wkhtmltopdfno sistema:Ubuntu/Debian:
sudo apt install wkhtmltopdf
Mac (via Homebrew):
brew install Caskroom/cask/wkhtmltopdf
Windows:
- Transferir o instalador: https://wkhtmltopdf.org/downloads.html
- Adicionar o caminho do executável ao
PATHdo sistema.
-
Configurar o serviço (se necessário) no ficheiro
config/snappy.php(pode ser publicado comphp artisan vendor:publish). -
Testar geração de PDF
use Barryvdh\Snappy\Facades\SnappyPdf; return SnappyPdf::loadView('pdf.servico', $data)->download('servico.pdf');
app/Models— Modelos Eloquent para cada entidade (Funcionário, Material, Serviço, etc).app/Http/Controllers— Controladores organizados por funcionalidade.app/Http/Middleware/CheckNivel.php— Middleware de controlo de permissões por nível de utilizador.database/migrations— Migrações para estrutura da base de dados.database/seeders— Seeds de dados para testes e desenvolvimento.routes/web.php— Rotas do projeto, agrupadas por nível de acesso.
-
Autenticação:
Utiliza sistema de login do Laravel (guard padrão). -
Permissões por nível:
Cada utilizador pertence a um Funcionário com um determinado nível (cod_nivel).
As permissões de acesso são controladas pelo middleware personalizadoCheckNivel, aplicado nas rotas:Nível Acesso 1 Administrador (acesso total) 2 Gestor (acesso a gestão de recursos) 3 Operador (acesso restrito aos seus serviços) Exemplo de proteção nas rotas:
Route::middleware(['auth', 'nivel:1,2'])->group(function () { Route::get('/servicos', [ServicoController::class, 'index']); // ... });
Após autenticação no sistema, cada utilizador terá acesso às funcionalidades conforme o seu nível de permissão:
- Listar todos os funcionários
- Criar novo funcionário
- Editar ou eliminar funcionários existentes
- Listar todos os materiais disponíveis
- Adicionar novos materiais ao inventário
- Consultar detalhes, editar ou remover materiais
- Registar perdas ou avarias nos materiais
- Criar novos serviços (ex: casamentos, batizados, eventos empresariais)
- Associar clientes aos serviços
- Alocar materiais e funcionários a cada serviço
- Registar check-in e check-out de recursos associados
- Visualizar detalhes completos de cada serviço/evento
- Atribuir e remover materiais ou funcionários de um serviço com datas de entrada e saída
Nota:
Cada ação só está disponível se o nível de permissão do utilizador permitir. Utilizadores de nível 3, por exemplo, apenas veem e gerem os serviços a que estão alocados.
O projeto utiliza migrações Laravel para criar automaticamente toda a estrutura da base de dados necessária ao sistema.
-
Migrar a base de dados:
php artisan migrate
-
Popular com dados de exemplo (seeds):
php artisan db:seed
- Os seeds criam dados base como funções, estados, níveis, alguns materiais, etc.
- Podes editar ou criar novos seeders em
database/seeders/para acrescentar dados fictícios para testes e demonstração.
Sugestão:
Após o seed, podes aceder com um utilizador admin ou criar o teu próprio.
Projeto desenvolvido por:
- Bruna Silva
- Luis Mago
- Tiago Cardona
Curso: CESAE Digital — Software Developer