Este projeto é uma biblioteca particular onde os usuários podem adicionar, visualizar e gerenciar livros, autores e gêneros. Cada livro no sistema possui uma avaliação e está vinculado a um autor e um gênero específico.
- Laravel
- React
- Docker
- PostgreSQL
O desafio consiste em implementar e aperfeiçoar a parte de gêneros no sistema, além de outros componentes fundamentais. Isso inclui:
- Implementação Front-end de Gêneros 🖥️: Visualização, edição e listagem de gêneros.
- Desenvolvimento de Testes para Autores 🔍: Implementar testes em PHP para a funcionalidade de autores.
- Implementação das Rotas de Gêneros 🚏: Desenvolver as rotas de visualização, criação, edição e remoção de gêneros.
- Correção de Bug 🐛: Identificar e corrigir um bug na ordenação padrão na página de gêneros.
- Segurança de Rotas 🔐: Proteger as rotas dos recursos, como http://localhost/api/v1/authors, que atualmente estão desprotegidas.
- Utilize os padrões de código já implementados para livros e autores. 📘👩💻
- As funções incluem visualizar, adicionar, editar e excluir gêneros. 🖼️✍️🗑️
- Desenvolva testes em PHP focados na funcionalidade dos autores. 🧪
- Baseie-se nos testes existentes para os livros.
- Implemente as rotas de CRUD para gêneros. ➕🔄❌
- Corrija o bug de ordenação na página de gêneros. 🐞🛠️
- Assegure a segurança de todas as rotas de API. 🛡️
- Implemente filtros adicionais na listagem de livros. 🔍📚
Para aqueles que desejam ir além, há a opção de implementar a funcionalidade de editoras:
- Front-end: Desenvolver a interface para adicionar, visualizar, editar e excluir editoras.
- Back-end: Implementar a lógica de negócios para gerenciar editoras.
- Testes: Criar testes robustos para a funcionalidade de editoras.
- Migração de Dados: Desenvolver as migrações necessárias para suportar editoras no banco de dados.
- Vínculo com Livros: Assegurar que cada livro possa ser associado a uma editora.
(Esta é uma funcionalidade opcional, destinada a candidatos que desejam demonstrar habilidades extras)
- Front-end: Desenvolver a interface para adicionar, visualizar, editar, excluir empréstimos e gerenciar pessoas.
- Back-end: Implementar a lógica de negócios para gerenciar empréstimos e pessoas.
- Testes: Criar testes robustos para a funcionalidade de empréstimos e pessoas.
- Migração de Dados: Desenvolver as migrações necessárias para suportar empréstimos e pessoas no banco de dados.
- Vínculo com Livros: Assegurar que cada livro possa ser associado a um empréstimo.
- Regras de negócio:
- Uma pessoa pode ter no máximo 3 empréstimos em aberto.
- Um livro não pode ser emprestado se já estiver emprestado.
- Um livro não pode ser emprestado se estiver atrasado.
- O prazo de devolução é de 7 dias.
- O histórico de empréstimos deve ser mantido.
- O histórico de empréstimos deve ser exibido para cada livro (na página de visualização de um livro).
- O histórico de empréstimos deve ser exibido para cada pessoa (na página de visualização de uma pessoa).
- Deve haver uma página dedicada para gerenciar empréstimos e consultar o histórico.
- Deve haver uma página dedicada para gerenciar pessoas e consultar o histórico de empréstimos de cada pessoa.
- Deve haver uma página dedicada para visualizar empréstimos atrasados.
- Na listagem de empréstimos, livros atrasados devem ser destacados e exibidos no topo da lista.
(Esta é uma funcionalidade opcional, destinada a candidatos que desejam demonstrar habilidades extras)
- Fork o Repositório: Inicie criando um fork do projeto. 🍴
- Clone o Seu Fork: Trabalhe localmente em sua máquina. 💻
- Desenvolvimento: Siga as regras acima para desenvolver as funcionalidades e correções. 🛠️👨💻
- Documente suas Mudanças: Descreva todas as implementações e correções no Pull Request. 📝
- Pull Request: Envie um Pull Request para o repositório original detalhando suas mudanças e implementações. 📤
- Mantenha o código limpo e siga as práticas de codificação padrão. 🧼👍
- Teste suas implementações cuidadosamente. 🧐📊
- Documente qualquer nova funcionalidade ou correção no Pull Request. 📄🖊️
Note
Para instalar o docker e o docker-compose, siga as instruções em https://docs.docker.com/get-docker/
- Clone o repositório
- Navegue até raíz do projeto
- Execute o comando
docker run --rm -v $(pwd):/app composer install
para instalar as dependências do PHP- No windows, execute
docker run --rm -v %cd%:/app composer install
- No windows, execute
- Execute
docker compose up -d
para iniciar as dependências do projeto - Execute
docker exec -it code.stack-app php artisan migrate --seed
para criar as tabelas no banco de dados e popular as tabelas - Acesse o endereço
http://localhost
- Divirta-se!
Execute docker container exec -it code.stack-app php artisan test --testsuite Feature
Note
Para executar os testes, é necessário que o projeto esteja rodando. Siga as instruções acima para executar o projeto.
Ao executar os testes, os dados do banco de dados serão apagados.
Execute docker exec -it code.stack-app php artisan db:seed
para popular o banco de dados novamente.
Caso tenha alguma dúvida, crie uma issue neste repositório para que todos possam acompanhar a discussão e a solução.
Warning
Este é um projeto exemplo! NUNCA compartilhe o arquivo .env
com ninguém, muito menos em um repositório público.