Este é um sistema desenvolvido em Node.js e Express para realizar operações CRUD (Create, Read, Update, Delete) em três entidades: "Protesto", "Emolumento" e "Usuário". O sistema permite o registro de protestos contra dívidas não pagas, cálculo automático do emolumento com base nos dados do protesto e gerenciamento de usuários.
- Node.js: Ambiente de execução JavaScript.
- Express: Framework para Node.js.
- Prisma: ORM (Object-Relational Mapping) para Node.js e TypeScript.
- PostgreSQL: Sistema de gerenciamento de banco de dados relacional.
- Jest: Framework de testes para JavaScript.
- bcryptjs: Biblioteca para hash de senhas.
- jsonwebtoken: Biblioteca para criação e verificação de tokens JWT.
- swagger-ui-express: Middleware para documentação de APIs.
O projeto foi desenvolvido seguindo alguns padrões de projeto e design patterns, como:
- Repository Pattern: Separação das operações de banco de dados em repositórios.
- Service Layer: Separação das regras de negócio em serviços.
- Middleware Pattern: Utilização de middlewares para tratamento de requisições.
- Strategy Pattern: Definição de interfaces para encapsular algoritmos.
- CRUD: Operações CRUD para usuários, protestos e emolumentos.
- Autenticação: Autenticação JWT para proteger rotas.
- Autorização: Controle de acesso baseado em roles
(USER, EMPLOYEE, ADMIN)
. - Cálculo Automático do Emolumento: O valor do emolumento é calculado automaticamente com base no valor do protesto.
- As rotas de login não possuem autenticação.
- Aos usuários
ADMIN
ouEMPLOYEE
, são permitidas todas as operações. - Ao usuário
USER
, são permitidas as operações de listagem de protestos, emolumentos, além da busca de um registro apenas.
- Node.js v20 LTS
- PostgreSQL
- Clone o repositório:
git clone git@github.com:victoralcan/ineo-teste.git cd ineo-teste
- Instale as dependências:
yarn install
- Execute o
docker-compose.yml
com o comando:docker compose up -d
- Configure as variáveis de ambiente no arquivo
.env
seguindo o.env.example
- Rode as migrações do banco de dados:
npx prisma migrate dev
- Gere o prisma client
npx prisma generate
- Rode o seed para popular o banco de dados com dados iniciais
yarn seed
- Rode a aplicação
yarn dev
Para rodar os testes, execute o comando:
yarn test
bin/
: Inicializador do servidordocs/
: Documentação da API.errors/
: Erros lançados pela aplicação.middlewares/
: Middlewares da aplicação.prisma/
: Configuração do Prisma.public/
: Arquivos estáticos.repositories/
: Repositórios da aplicação.routes/
: Rotas da aplicação.services/
: Serviços da aplicação.utils/
: Funções utilitárias.app.ts
: Configuração do Express.docker-compose.yml
: Configuração do Docker Compose com a infraestrutura necessária.
Esta API é documentada utilizando Swagger(OpenAPI). Para acessar a documentação, acesse a rota /api-docs
.
Ao popular o banco com as seeds, é criado 1 usuário com a role EMPLOYEE
:
- Usuário:
- Email:
employee@example.com
- Senha:
senha
- Email:
- Filtro de Protestos e Emolumentos: Implementar filtros para busca de protestos e emolumentos.
- Logs: Implementar logs para monitoramento da aplicação.
- Validação de Dados: Implementar validação de dados com
Joi
ouYup
. - Testes de Integração: Implementar testes de integração.