Portal de Requisição e Reserva de Equipamentos

Portal interno para consultar, requisitar, aprovar, entregar e devolver equipamentos cuja fonte oficial de inventário é o Snipe-IT.

Estado atual

O projeto concluiu as Fases 1 a 6 e já inclui a primeira entrega técnica da Fase 7: autenticação Microsoft Entra/OIDC com associação explícita, health checks, procedimentos executáveis de backup/restauro e sincronização de leitura validada contra o Snipe-IT de produção. Entra/SMTP institucionais, observabilidade externa, validação formal de permissões e piloto permanecem tarefas de entrada em produção.

Consulte sempre docs/PROJECT_STATUS.md antes de alterar o projeto. Esse documento contém o ponto de situação, riscos e próxima tarefa recomendada.

Arranque rápido

Requisitos: Docker Desktop e Docker Compose.

cp .env.example .env
docker compose build
docker compose run --rm app php artisan key:generate
docker compose up -d
docker compose exec app php artisan migrate --seed

O portal fica disponível em http://localhost:8000 e o Mailpit em http://localhost:8025.

Contas de desenvolvimento:

Perfil Email Palavra-passe
Requisitante demo@escola.pt password
Administrador admin@escola.pt password

Estas credenciais existem apenas no DatabaseSeeder e nunca devem ser usadas em produção.

Comandos frequentes

docker compose exec app composer test
docker compose exec app composer lint
docker compose exec app composer types:check
docker compose exec node npm run types:check
docker compose exec node npm run lint:check
docker compose exec node npm run build

Como o serviço Docker define variáveis de desenvolvimento, use o script Composer para testes. O script força de forma isolada APP_ENV=testing, SQLite em memória, cache/sessão em memória e fila síncrona, evitando locks Redis ou middleware CSRF do ambiente local:

docker compose exec app composer test

Para repor apenas dados de desenvolvimento:

docker compose exec app php artisan migrate:fresh --seed

Documentação

Stack

  • Laravel 13 / PHP 8.3+
  • React 19 / TypeScript / Inertia 3
  • Tailwind CSS 4 / componentes shadcn/ui
  • PostgreSQL 17
  • Redis 7
  • Nginx, worker de filas, scheduler e Mailpit em Docker Compose
  • Pest, PHPStan/Larastan, ESLint, Prettier e TypeScript

Princípio central

O portal nunca escreve diretamente na base de dados do Snipe-IT. Identificação e estado operacional do equipamento pertencem ao Snipe-IT; períodos, aprovações, conflitos, notificações, entrega/devolução e auditoria pertencem ao portal.

A instância Snipe-IT configurada é de produção: o portal não cria, edita nem elimina inventário. As únicas escritas remotas permitidas são checkout e check-in operacionais, com validação atual do estado e prova local do movimento; testes e sincronizações são apenas de leitura.

Description
No description provided
Readme 544 KiB
Languages
TypeScript 55.7%
PHP 43%
CSS 0.5%
JavaScript 0.3%
Shell 0.2%
Other 0.2%