{"id":20245343,"url":"https://github.com/daaaiii/backend-bankme","last_synced_at":"2026-04-11T00:55:11.319Z","repository":{"id":208281554,"uuid":"721241383","full_name":"Daaaiii/backend-bankme","owner":"Daaaiii","description":"Backend do teste técnico da BankMe","archived":false,"fork":false,"pushed_at":"2023-11-20T19:50:46.000Z","size":3112,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-14T01:49:35.972Z","etag":null,"topics":["docker","nestjs","prisma","prisma-orm","sqlite","typescript"],"latest_commit_sha":null,"homepage":"https://bankme-api-5n7gl.ondigitalocean.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Daaaiii.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-20T16:39:19.000Z","updated_at":"2024-02-16T20:46:17.000Z","dependencies_parsed_at":"2024-11-14T13:15:42.003Z","dependency_job_id":null,"html_url":"https://github.com/Daaaiii/backend-bankme","commit_stats":null,"previous_names":["daaaiii/backend-bankme"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Daaaiii%2Fbackend-bankme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Daaaiii%2Fbackend-bankme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Daaaiii%2Fbackend-bankme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Daaaiii%2Fbackend-bankme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Daaaiii","download_url":"https://codeload.github.com/Daaaiii/backend-bankme/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241688724,"owners_count":20003527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","nestjs","prisma","prisma-orm","sqlite","typescript"],"created_at":"2024-11-14T09:20:19.197Z","updated_at":"2025-12-31T01:03:21.166Z","avatar_url":"https://github.com/Daaaiii.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003ca href=\"https://bankme.tech/\" target=\"blank\"\u003e\u003cimg src=\"assets/logo-bankme.png\" width=\"100\" alt=\"BankMe Logo\" /\u003e\u003c/a\u003e\n\n\u003c/p\u003e\n\n\n## Descrição\n\nAPI 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.\n\nSobre 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.\nAlém disso, os registros das senhas estão criptografadas.\n\nEu 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. \n\nTambém tentei implementar lotes usando o `@nestjs/bull`, creio que ainda seja necessário algum aprimoramento.\n\nO 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.\n\nAlé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.\n\n\n## Stack\n\n[![My Skills](https://skillicons.dev/icons?i=vscode,js,typescript,nodejs,postman,nestjs,git,github,sqlite,prisma,redis,docker,swagger)](https://skillicons.dev)\n\n\n## Instalação\n\n```bash\n$ npm install\n```\n\n## Rodando o app\n\n```bash\n# development\n$ npm run start\n\n# watch mode\n$ npm run dev\n\n# production mode\n$ npm run start:prod\n```\n\n## Rodando o app com Docker\n\n```bash\n# Use the command on git bash \n$ docker run -p 3000:3000 -it backend-bankme:bankme\n```\n\u003c!-- ## Test\n\n```bash\n# unit tests\n$ npm run test\n\n# e2e tests\n$ npm run test:e2e\n\n# test coverage\n$ npm run test:cov\n``` --\u003e\n## Deploy\nO deploy da api foi realizado na DigitalOcean e pode ser verificado aqui: \n`https://bankme-api-5n7gl.ondigitalocean.app/`.\nEsta página já direciona para o Swagger da applicação.\n\n## Documentação\n\nTambé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.\nTambém é possível verificar o Swagger no servidor `https://bankme-api-5n7gl.ondigitalocean.app/`.\n\n![Swagger](assets/swagger.gif)\n\n\n## Melhorias\n\n1) Adicionar o Mail service para complementar a rota de batch `integrations/payable/batch`.\n\n2) 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.\nAtualmente, 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.\n\n3) 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.\n\n\n## Stay in touch\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://www.linkedin.com/in/daiane-deponti-bolzan/\"\u003e\n        \u003cimg src=\"https://github.com/Daaaiii.png\" width=\"100px;\" alt=\"Foto da Dai\"/\u003e\u003cbr\u003e\n        \u003csub\u003e\n          \u003cb\u003eDaiane Bolzan\u003c/b\u003e\n        \u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\n## License\n\n[MIT licensed](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaaaiii%2Fbackend-bankme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaaaiii%2Fbackend-bankme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaaaiii%2Fbackend-bankme/lists"}