Skip to content

Latest commit

 

History

History
146 lines (112 loc) · 4.45 KB

README.md

File metadata and controls

146 lines (112 loc) · 4.45 KB

bull-back-challenge

Package Technology Technology Package Technology

Backend technical challenge from toro investimentos

Requirements

About

Backend responsável por prover dados para SPA. Neste desafio, o user story escolhido foi a TORO-001.

Como não há cadastro de contas, e para auxiliar no teste, será gerado 4 contas para testes. Uma dessas contas estará bloqueada.

Conta bloqueada é uma proposta extra para aumentar a segurança, no momento de autenticação efetuda pensei em enviar uma notificação (sms, push, email) para usuário informando que foi feita login em determiado dispositivo onde ele pode não reconhecer o acesso e bloquear a conta. O bloqueio da conta em si não foi implementado é apenas uma proposta. Contas bloqueadas não podem acessar a plataforma.

Relação de contas para poder testar:

Senha para acesso todos usuários: 123456

[
	{
		"id" : "b296c754-6a10-41ce-a333-1d4940acc1d4",
		"email" : "account1@bull.com.br",
		"cpf" : "0000000001",
		"blocked" : false,
		"createdAt" : "2023-03-11T03:17:47.083Z",
		"updatedAt" : "2023-03-11T03:17:47.083Z",
		"hash" : "$2b$08$pq31Mm91E7G4\/pEaZCfymu7fSqB4hIxrx50By5ThXAMm3wG4DPLju",
		"name" : "Account 1"
	},
	{
		"id" : "f71bf306-9e32-41f7-993d-e363d2f65b15",
		"email" : "account2@bull.com.br",
		"cpf" : "0000000002",
		"blocked" : false,
		"createdAt" : "2023-03-11T03:17:47.083Z",
		"updatedAt" : "2023-03-11T03:17:47.083Z",
		"hash" : "$2b$08$pq31Mm91E7G4\/pEaZCfymu7fSqB4hIxrx50By5ThXAMm3wG4DPLju",
		"name" : "Account 2"
	},
	{
		"id" : "6bc53670-8747-4245-bc6f-458cf735f476",
		"email" : "account3@bull.com.br",
		"cpf" : "0000000003",
		"blocked" : false,
		"createdAt" : "2023-03-11T03:17:47.083Z",
		"updatedAt" : "2023-03-11T03:17:47.083Z",
		"hash" : "$2b$08$pq31Mm91E7G4\/pEaZCfymu7fSqB4hIxrx50By5ThXAMm3wG4DPLju",
		"name" : "Account 3"
	},
	{
		"id" : "68e050f8-14ad-4a5a-99eb-97c22089ce04",
		"email" : "account4@bull.com.br",
		"cpf" : "0000000004",
		"blocked" : true,
		"createdAt" : "2023-03-11T03:17:47.083Z",
		"updatedAt" : "2023-03-11T03:17:47.083Z",
		"hash" : "$2b$08$pq31Mm91E7G4\/pEaZCfymu7fSqB4hIxrx50By5ThXAMm3wG4DPLju",
		"name" : "Account 4"
	}
]

Setup

# it's necessary (required)
npm i
# linux/macOs
$ sh ./scripts/shell.sh

# or
$ sh ./scripts/dev.sh #show real-time log (nodemon)

Helper para linux/macOs (já faz tudo o que precisa)

$ sh ./scripts/shell.sh
# it's already done. You should be able to access http://localhost:3001/health-check

Outros sistemas operacionais:

Faça uma cópia .env.example e renomeie para .env (Se for usar node local, mude DB_HOST=bull-back-dbpara DB_HOST=localhost)

$ docker-compose up -d
$ docker exec -it bull-back-api bash

Tests

Execute os comandos:

$ docker exec -it bull-back-api bash

npm run test

# Testes com relatório de cobertura
npm run test:coverage

Documentação da API: http://localhost:3001/swagger

Techs

Essa aplicação foi projetada seguindo alguns princípios e techs, tais como:

  • Clean Architeture
  • SOLID
  • RESTful
  • Object Calisthenics
  • Repositories
  • Unit Tests
  • Integration Tests

A idéia de seguir alguns princípios de clean Arch e poder desenvolver soluções que não fiquem tão acompladas a framework, ORM, Client HTTP, banco de dados e etc. Em caso de mudança, exigirá esforço apenas para implementar os contratos (interfaces) no domínio.