Aplicação Web desenvolvida como resolução do desafio técnico para cadastro e gerenciamento de Livros, Autores e Assuntos. O projeto implementa um CRUD completo baseado em uma modelagem de dados relacional estrita, incorporando requisitos sistêmicos como formatação rigorosa de dados monetários, tratamento de exceções em nível de persistência e geração de relatórios otimizados através de Views no banco de dados.
O projeto foi arquitetado com foco em escalabilidade, manutenibilidade e qualidade de código, atendendo aos seguintes critérios de aceite:
- Gestão de Entidades (CRUD): Implementação completa para
Livro,AutoreAssunto, respeitando os relacionamentos (N:N) estabelecidos no diagrama original. - Extensão de Domínio: Inclusão do campo monetário
Valor (R$)na entidadeLivro, com tratamento adequado de casting e formatação (Mutators/Accessors). - Performance e Persistência: Geração de um relatório agrupado por autor, construído obrigatoriamente a partir de uma
Viewno banco de dados, minimizando o processamento em camada de aplicação. - Resiliência (Error Handling): Tratamento de exceções centralizado, isolando erros de banco de dados (ex: violação de Foreign Key) para evitar
Try/Catchgenéricos e retornar feedbacks precisos ao usuário. - Arquitetura em Camadas: Adoção estrita do padrão
Controller -> Service -> Repositoryvisando desacoplamento, Single Responsibility Principle (SRP) e alta testabilidade. - Confiabilidade (TDD): Cobertura de testes unitários e Feature Tests conduzidos com o framework Pest, garantindo o comportamento das regras de negócio.
- Interface (UI/UX): Interface responsiva e padronizada utilizando Vue.js e Tailwind CSS, garantindo feedback visual claro para ações de sucesso ou falha.
O repositório adota uma separação de responsabilidades (Separation of Concerns) que isola a aplicação Laravel dos artefatos de infraestrutura, CI/CD e documentação.
Library
├── src/ # Código-fonte da aplicação (Laravel 11+, Vue 3)
├── docs/ # Documentação técnica detalhada, diagramas e notas de arquitetura (pt-BR)
├── infra/ # Configurações de contêineres Docker, Nginx e provisionamento (Staging/Production)
├── scripts/ # Shell scripts utilitários para setup de ambiente, migrations e quality checks
└── .github/ # Workflows de CI/CD (GitHub Actions) e templates de Pull Request (PR)
| Camada | Tecnologia | Propósito / Decisão Arquitetural |
|---|---|---|
| Backend | Laravel (PHP) | Fornecer o core da lógica de negócio, ORM (Eloquent), roteamento e tratamento de exceções de forma padronizada. |
| Design Pattern | Service/Repo | Abstração do acesso a dados (Repositories) e regras de negócio (Services), mantendo controladores magros. |
| Exportação PDF | DOMPDF | Geração do relatório consolidado de autores e livros consumindo diretamente da View SQL do banco para altíssima performance. |
| Frontend | Vue.js 3 | Interface reativa orientada a componentes. Integrado via Inertia.js para atuar como SPA eliminando o overhead de API e estado global. |
| Estilização | Tailwind CSS | Construção ágil de interfaces sob medida através de classes utilitárias. |
| Testes | Pest PHP | Framework para execução do TDD com sintaxe focada em legibilidade e velocidade. |
| Infraestrutura | Docker Compose | Isolamento total de dependências garantindo paridade entre desenvolvimento e produção. |
| Banco de Dados | MySQL 8.0 | Motor relacional responsável pela persistência, integridade referencial e hospedagem da View do relatório. |
O ambiente de desenvolvimento foi projetado para ser 100% isolado via contêineres. Para executar o projeto, são exigidos:
- Git
- Docker (Engine 24.0+)
- Docker Compose (V2)
Todos os scripts e instruções para a implantação foram mapeados e organizados para demonstração na apresentação técnica.
1. Clonar o repositório
git clone [https://github.com/websterl3o/library.git](https://github.com/websterl3o/library.git)
cd library
2. Configurar variáveis de ambiente
Copie o arquivo de exemplo para o diretório da aplicação (src/):
cp src/.env.example src/.env
3. Subir a infraestrutura (Docker) Inicie os contêineres em background:
docker compose up -d --build
4. Instalar dependências e inicializar a aplicação
# Instalar dependências do PHP e Node
docker compose exec app composer install
docker compose exec app npm install
# Gerar chave da aplicação
docker compose exec app php artisan key:generate
# Executar as migrations (incluindo a View do relatório) e popular o banco
docker compose exec app php artisan migrate:fresh --seed
# Compilar os assets do Frontend via Vite
docker compose exec app npm run build
5. Acessar a aplicação
- Web:
http://localhost:8000
6. Testes
- Testes (TDD): Para validar a suíte automatizada:
docker compose exec app php artisan test- Relatório de Cobertura (Coverage): Para gerar o relatório visual em HTML da cobertura de testes (
src/coverage-report):
docker compose exec app php -d pcov.enabled=1 artisan test --coverage-html=coverage-report