Este projeto é uma aplicação Full-Stack para gerenciamento de produtos, com foco em Arquitetura Limpa, SOLID e Segurança. A solução entrega CRUD completo com interface web e API RESTful protegida.
- Repository Pattern: desacoplamento da persistência via
ProductRepositoryInterface. - Service Layer: regras de negócio centralizadas na
ProductService. - Segurança: autenticação com Laravel Breeze (Web) e Sanctum (API).
- Validação: uso de
FormRequestpara regras de entrada. - PestPHP: testes de Feature e Unit cobrindo fluxo principal.
- Documentação Swagger: endpoints documentados com suporte a autenticação Bearer.
- Monitoramento: Redis e Worker para filas (Queues/Jobs).
- Backend: PHP 8.3 + Laravel 11
- Frontend: Vue 3 (Composition API) + Inertia.js + Pinia
- Infra: Docker & Docker Compose (Nginx, MySQL, Redis)
- Testes: PestPHP
- UI/UX: estética baseada no padrão Gov.br
Pré-requisitos: Docker com plugin Docker Compose V2 (docker compose), Git, e as portas 8080 (HTTP), 3306 e 6379 livres no host (mapeadas pelo Compose).
O Git cria uma pasta com o nome do repositório (First). Se você clonou para outro diretório, use esse nome no cd.
git clone git@github.com:maaclrd/First.git
cd Firstdocker compose up -d --buildAguarde alguns segundos na primeira execução para o MySQL ficar pronto antes dos comandos Artisan abaixo.
Instale dependências PHP/Node e gere o .env:
docker compose exec app sh -lc "composer install && npm install"
docker compose exec app sh -lc "cp .env.example .env && php artisan key:generate"
docker compose exec app chown -R www-data:www-data storage bootstrap/cachedocker compose exec app sh -lc "php artisan migrate --force --seed"
docker compose exec app sh -lc "npm run build"
docker compose exec app sh -lc "php artisan l5-swagger:generate"- E-mail:
admin@example.com - Senha:
password
Para executar de uma vez os passos 3, 4 e 5:
docker compose exec app sh -lc "composer install && npm install && cp .env.example .env && php artisan key:generate && chown -R www-data:www-data storage bootstrap/cache && php artisan migrate --force --seed && npm run build && php artisan l5-swagger:generate"Para testar endpoints protegidos:
- Acesse
http://localhost:8080/logincom o usuário padrão ou registre um novo usuário. - Gere um token Sanctum para o usuário autenticado (Tinker ou endpoint dedicado de login/token).
- Abra
http://localhost:8080/api/documentation. - Clique em Authorize e informe
Bearer <seu_token>.
- Aplicação Web: http://localhost:8080
- Documentação Swagger: http://localhost:8080/api/documentation
docker compose exec app sh -lc "php artisan test"| Listagem e Filtros | Cadastro de Produtos |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
| Token | Listagem |
|---|---|
![]() |
![]() |






