Sistema de Gestão de Biblioteca desenvolvido como projeto de estudo focado em Clean Code, SOLID e Arquitetura Laravel Moderna. O objetivo principal foi aplicar as melhores práticas de desenvolvimento, segurança e manutenibilidade.
- Login, Registro e Logout seguros.
- Proteção CSRF em todos os formulários.
- Validação de dados via Form Requests dedicados.
- Cadastro completo de autores.
- Listagem com paginação.
- Edição e Exclusão (com integridade referencial).
- Cadastro de livros vinculados a autores (Relação 1:N).
- Controle de Status via PHP 8.1 Enums (
Available,Borrowed, etc). - Validação de ISBN único (com exceção inteligente na edição).
- Prevenção de problemas de performance (N+1 Queries) usando Eager Loading.
-
Layout responsivo com Sidebar lateral.
-
Estilização via Tailwind CSS.
-
Uso de Blade Components para reaproveitamento de código.
-
Feedback visual (Flash Messages) para ações de sucesso/erro.
Este projeto segue rigorosamente os padrões da comunidade Laravel e PSR-12:
- Linguagem: PHP 8.2+ (com
declare(strict_types=1)). - Framework: Laravel 10/11.
- Banco de Dados: MySQL 8.0.
- Ambiente: Docker & Laravel Sail (Isolamento total de ambiente).
- Design Patterns:
- MVC Rigoroso: Controllers magros, lógica delegada.
- Type Safety: Uso extensivo de tipagem forte e Enums.
- Repository/Service Mindset: Lógica de validação isolada em FormRequests.
Este projeto utiliza Laravel Sail (Docker), o que significa que você não precisa ter PHP ou Composer instalados na sua máquina local, apenas o Docker.
- Docker Desktop instalado e rodando.
- Git.
- Clone o repositório
git clone https://github.com/desv-jorge/Library-PRO.git
cd library-pro
- Configure as Variáveis de Ambiente Faça uma cópia do arquivo de exemplo para o arquivo real.
cp .env.example .env
- Instale as dependências (Via Container) Este comando baixa uma imagem temporária apenas para instalar as pastas do vendor.
docker run --rm \
-u "$(id -u):$(id -g)" \
-v "$(pwd):/var/www/html" \
-w /var/www/html \
laravelsail/php82-composer:latest \
composer install --ignore-platform-reqs
- Suba o Ambiente (Sail)
./vendor/bin/sail up -d
- Gere a Chave da Aplicação e Migre o Banco
./vendor/bin/sail artisan key:generate
./vendor/bin/sail artisan migrate:fresh --seed
Nota: O comando
--seedirá criar um usuário padrão para testes.
- Acesse a Aplicação
Abra seu navegador em:
http://localhost
Ao rodar as migrations com seed, o seguinte usuário é criado automaticamente:
- Email:
admin@example.com - Senha:
password
Para facilitar a navegação pelo código:
app/Models: Modelos Eloquent com Casts e Relacionamentos configurados.app/Http/Controllers: Controladores "Magros" apenas orquestrando fluxo.
app/Http/Requests: Toda regra de validação reside aqui (Clean Code).
app/Enums: Definições de status (Type Safety).resources/views/components: Componentes Blade reutilizáveis.
Para evitar digitar ./vendor/bin/sail toda vez, adicione este alias ao seu terminal:
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
Agora você pode usar comandos curtos:
sail artisan migrate
sail composer require ...
Este projeto está sob a licença MIT.