GithubHelp home page GithubHelp logo

daaaiii / backend-bankme Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 3.04 MB

Backend do teste técnico da BankMe

Home Page: https://bankme-api-5n7gl.ondigitalocean.app/

License: MIT License

JavaScript 2.08% Dockerfile 1.59% TypeScript 96.32%
docker nestjs prisma prisma-orm sqlite typescript

backend-bankme's Introduction

BankMe Logo

Descrição

API construida utilizando Nestjs e SQlite com authenticação JWT. O projeto visa permitir ao usuário realizar as operações de CRUD para o Cedente e os Pagáveis de uma instituição financeira baseados nas permissões que o usuário tem no sistema.

Sobre a segurança do aplicativo, adicionei o @nestjs/throttler para impedir ataques de força bruta na API. E também a senha de login usuário deve conter no mínimo 8 characteres, incluindo um símbolo, uma letra maíscula e um número pelo menos. Além disso, os registros das senhas estão criptografadas.

Eu adicionei um Guard para a possibilidade de diferenciação de autorização dos usuários entre admin e user permitindo que os usuários tenham acesso limitado a determinandas funções dentro do app.

Também tentei implementar lotes usando o @nestjs/bull, creio que ainda seja necessário algum aprimoramento.

O banco de dados utilizado foi o SQLite com o PrismaORM permitindo assim mais fácil acesso ao banco. Adicionei também alguns campos extras no banco de dados para verificar quando um registro é criado ou atualizado.

Além disso, adicionei um Dockerfile para facilitar o uso do projeto. As instruções de como usar estão na Secção sobre o Instalação abaixo.

Stack

My Skills

Instalação

$ npm install

Rodando o app

# development
$ npm run start

# watch mode
$ npm run dev

# production mode
$ npm run start:prod

Rodando o app com Docker

# Use the command on git bash 
$ docker run -p 3000:3000 -it backend-bankme:bankme

Deploy

O deploy da api foi realizado na DigitalOcean e pode ser verificado aqui: https://bankme-api-5n7gl.ondigitalocean.app/. Esta página já direciona para o Swagger da applicação.

Documentação

Também é possível verificar as rotas do projeto, rodando a api localmente e acessando http://localhost:3000, em que a página inicial do projeto já mostrará o Swagger da API. Também é possível verificar o Swagger no servidor https://bankme-api-5n7gl.ondigitalocean.app/.

Swagger

Melhorias

  1. Adicionar o Mail service para complementar a rota de batch integrations/payable/batch.

  2. Eu criei um Guard para administrar as autorizações da api de forma que admin e users podem ter acesso ou não a determinadas funcionalidades mas é necessário um refinamento técnico para decidir quais funcionalidades devem ou não estar disponíveis para cada tipo de usuário. Atualmente, qualquer pessoa com o login pode acessar todas as funcionalidades da aplicação, mas creio que seria interessante, por exemplo, permitir que somente admins pudessem excluir registros do banco.

  3. Paginação. Eu tentei implementar a paginação nas rotas para listar todos os cedentes e pagáveis mas acabou não funcionando como o esperado e seria necessário adicionar posteriormente para impedir que o sistema se sobrecarregue com um requisição se houver muitos registros.

Stay in touch

Foto da Dai
Daiane Bolzan

License

MIT licensed

backend-bankme's People

Contributors

daaaiii avatar

Stargazers

Jhonny Freitas Dutra avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.