/banking-system

Uma API de sistema bancário desenvolvida para o processo seletivo da NG.CASH

Primary LanguageTypeScript

Sobre | Tecnologias | Documentação | Requisitos | Rodando o projeto local | Desenvolvedor

💰 Projeto NG-Cash 💸

Uma API desenvolvida para o processo seletivo da NG.CASH. O back-end é uma API REST desenvolvida em Node.JS com TypeScript como linguagem principal, Postgres como banco de dados, Prisma como ORM e Jest para os testes unitários da aplicação, atualmente se encontra rodando localmente com o uso do Docker. a API funciona como um sistema bancário comum, onde é possível visualizar seu saldo e realizar transferências, ver todas as transações de saída e entrada, filtrar por data também, tudo isso o mais automatizado possível. Também foi feita o uso de bibliotecas BcryptJs para o rasheio de senhas, o JWT para a criptografia dos tokens, e Uuid para a geração de IDs.

🛠 Tecnologias ⬇️

📃 Documentação da API no Postman

Requisito atendidos ✔

  • ✅ Qualquer pessoa deverá poder fazer parte da NG. Para isso, basta realizar o cadastro informando username e password.
  • ✅ Deve-se garantir que cada username seja único e composto por, pelo menos, 3 caracteres.
  • ✅ Deve-se garantir que a password seja composta por pelo menos 8 caracteres, um número e uma letra maiúscula. Lembre-se que ela deverá ser hasheada ao ser armazenada no banco.
  • ✅ Durante o processo de cadastro de um novo usuário, sua respectiva conta deverá ser criada automaticamente na tabela Accounts com um balance de R$ 100,00. É importante ressaltar que caso ocorra algum problema e o usuário não seja criado, a tabela Accounts não deverá ser afetada.
  • ✅ Todo usuário deverá conseguir logar na aplicação informando username e password. Caso o login seja bem-sucedido, um token JWT (com 24h de validade) deverá ser fornecido.
  • ✅ Todo usuário logado (ou seja, que apresente um token válido) deverá ser capaz de visualizar seu próprio balance atual. Um usuário A não pode visualizar o balance de um usuário B, por exemplo.
  • ✅ Todo usuário logado (ou seja, que apresente um token válido) deverá ser capaz de realizar um cash-out informando o username do usuário que sofrerá o cash-in), caso apresente balance suficiente para isso. Atente-se ao fato de que um usuário não deverá ter a possibilidade de realizar uma transferência para si mesmo.
  • ✅ Toda nova transação bem-sucedida deverá ser registrada na tabela Transactions. Em casos de falhas transacionais, a tabela Transactions não deverá ser afetada.
  • ✅ Todo usuário logado (ou seja, que apresente um token válido) deverá ser capaz de visualizar as transações financeiras (cash-out e cash-in) que participou. Caso o usuário não tenha participado de uma determinada transação, ele nunca poderá ter acesso à ela.
  • ✅ Todo usuário logado (ou seja, que apresente um token válido) deverá ser capaz de filtrar as transações financeiras que participou por:
    • Data de realização da transação e/ou
    • Transações de cash-out;
    • Transações de cash-in.

💻 Rodando o projeto na sua máquina

Pré-Requisito

  • Possuir Docker instalado na sua máquina

Como instalar e rodar

  • Para baixar o projeto, execute os seguintes comandos no seu terminal:
git clone https://github.com/efss7/seletivo-ng-cash.git
  • Para instalar e rodar o server (obrigatório)
cd seletivo-ng-cash
docker compose up
  • Para rodar os testes unitários (opcional)
npm run test

👨‍💻 Desenvolvedor

Imagem profile Eric Silva desenvolvedor
Eric Silva

Voltar para o topo ⬆️