Este repositório implementa um sistema de livraria utilizando um design baseado em DDD (Domain-Driven Design) e as seguintes tecnologias:
- Node.js: Back-end do sistema, gerenciando a lógica de negócios e os endpoints da API.
- Neo4j: Banco de dados orientado a grafos para modelar relações complexas entre entidades como livros, autores e usuários.
- Next.js: Front-end do sistema, proporcionando uma interface amigável e responsiva para os usuários.
- Jest: Framework de testes para garantir a qualidade do código e a integridade do sistema.
- Gestão de Livros: Cadastro, edição e remoção de livros no sistema.
- Pesquisa Avançada: Busca de livros por título, autor ou gênero.
- Sistema de Recomendação: Sugestões personalizadas baseadas em histórico de leitura e preferências.
- Relacionamentos: Exploração de relações entre livros e autores usando grafos no Neo4j.
- Autenticação e Autorização: Gerenciamento seguro de usuários com diferentes papéis (administradores, clientes, etc.).
O sistema está dividido em camadas baseadas em DDD para separar responsabilidades e organizar o código:
Contém as regras de negócio principais e as entidades centrais do sistema.
- Entidades: Modelos principais, como
Book,Author,User. - Agregados: Conjuntos de objetos associados, tratados como uma unidade (ex.: um autor com seus livros).
- Serviços de Domínio: Lógicas que não se encaixam em uma única entidade ou agregado.
- Repositórios: Interfaces para acesso aos dados.
Orquestra o fluxo de informação entre o domínio e o mundo externo.
- Serviços de Aplicação: Coordenam casos de uso específicos, como "cadastrar um livro" ou "recomendar livros".
- DTOs: Objetos de transferência de dados entre as camadas.
Fornece implementações para os repositórios e conexões com tecnologias externas.
- Banco de Dados: Configurações e interações com o Neo4j.
- Serviços Externos: Integrações com APIs de terceiros, se necessário.
Responsável pela interação com o usuário final.
- Front-End: Desenvolvido com Next.js para renderização SSR (Server-Side Rendering) e uma experiência fluida.
Certifique-se de ter instalados os seguintes softwares:
- Node.js (versão 18 ou superior)
- Neo4j (Community ou Enterprise Edition)
-
Clone o repositório:
git clone https://github.com/seu-usuario/library-system.git cd library-system -
Instale as dependências:
npm install
-
Configure o arquivo
.envcom as variáveis de ambiente necessárias:NEO4J_URI=bolt://localhost:7687 NEO4J_USERNAME=seu-usuario NEO4J_PASSWORD=sua-senha JWT_SECRET=sua-chave-secreta
-
Inicie o Neo4j e certifique-se de que está funcionando corretamente.
-
Execute o servidor de desenvolvimento:
npm run dev
-
Abra o navegador em http://localhost:3000.
-
Para rodar os testes:
npm run test -
Para acompanhar a cobertura de testes:
npm run test:coverage
- Faça um fork do projeto.
- Crie um branch para sua feature/bugfix:
git checkout -b minha-feature
- Faça os commits e envie suas alterações:
git push origin minha-feature
- Abra um pull request no repositório principal.
Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.