Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/daaaiii/backend-bankme
Backend do teste técnico da BankMe
https://github.com/daaaiii/backend-bankme
docker nestjs prisma prisma-orm sqlite typescript
Last synced: 4 days ago
JSON representation
Backend do teste técnico da BankMe
- Host: GitHub
- URL: https://github.com/daaaiii/backend-bankme
- Owner: Daaaiii
- License: mit
- Created: 2023-11-20T16:39:19.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2023-11-20T19:50:46.000Z (12 months ago)
- Last Synced: 2023-11-21T18:29:23.029Z (12 months ago)
- Topics: docker, nestjs, prisma, prisma-orm, sqlite, typescript
- Language: TypeScript
- Homepage: https://bankme-api-5n7gl.ondigitalocean.app/
- Size: 2.97 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## 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](https://skillicons.dev/icons?i=vscode,js,typescript,nodejs,postman,nestjs,git,github,sqlite,prisma,redis,docker,swagger)](https://skillicons.dev)
## Instalação
```bash
$ npm install
```## Rodando o app
```bash
# development
$ npm run start# watch mode
$ npm run dev# production mode
$ npm run start:prod
```## Rodando o app com Docker
```bash
# 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](assets/swagger.gif)
## 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
## License
[MIT licensed](LICENSE)