{"id":22239337,"url":"https://github.com/maxsonferovante/mybank-api-rest","last_synced_at":"2026-04-13T14:31:55.259Z","repository":{"id":189453118,"uuid":"680706231","full_name":"maxsonferovante/mybank-api-rest","owner":"maxsonferovante","description":"Esta é uma API para um banco digital que permite a gestão de contas bancárias, depósitos, saques, transferências e consulta de saldo. A API foi construída usando Node.js, TypeScript, Express e Prisma, seguindo os princípios SOLID.","archived":false,"fork":false,"pushed_at":"2023-09-09T00:21:27.000Z","size":162,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-20T11:52:52.495Z","etag":null,"topics":["expressjs","nodejs","postgresql","prisma","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxsonferovante.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-08-20T06:07:24.000Z","updated_at":"2025-10-20T10:29:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"2e18e8f5-2c9b-40ec-924c-947134d96c1e","html_url":"https://github.com/maxsonferovante/mybank-api-rest","commit_stats":null,"previous_names":["maxsonferovante/mybank-api-rest"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/maxsonferovante/mybank-api-rest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxsonferovante%2Fmybank-api-rest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxsonferovante%2Fmybank-api-rest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxsonferovante%2Fmybank-api-rest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxsonferovante%2Fmybank-api-rest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxsonferovante","download_url":"https://codeload.github.com/maxsonferovante/mybank-api-rest/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxsonferovante%2Fmybank-api-rest/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31757477,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T13:27:56.013Z","status":"ssl_error","status_checked_at":"2026-04-13T13:21:23.512Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["expressjs","nodejs","postgresql","prisma","typescript"],"created_at":"2024-12-03T03:19:00.603Z","updated_at":"2026-04-13T14:31:55.248Z","avatar_url":"https://github.com/maxsonferovante.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# API de Banco Digital\n\nEsta é uma API para um banco digital que permite a gestão de contas bancárias, depósitos, saques, transferências e consulta de saldo. A API foi construída usando Node.js, TypeScript, Express e Prisma, seguindo os princípios SOLID.\n\n![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge\u0026logo=node.js\u0026logoColor=white)\n![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)\n![Express.js](https://img.shields.io/badge/express.js-%23404d59.svg?style=for-the-badge\u0026logo=express\u0026logoColor=%2361DAFB)\n![Prisma](https://img.shields.io/badge/Prisma-3982CE?style=for-the-badge\u0026logo=Prisma\u0026logoColor=white)\n\n## Tecnologias Utilizadas\n\n- Node.js: Ambiente de execução JavaScript.\n- TypeScript: Linguagem que adiciona tipagem estática ao JavaScript.\n- Express: Framework web para construir APIs.\n- Prisma: ORM para acesso ao banco de dados.\n- PostgreSQL: Banco de dados relacional usado com o Prisma.\n\n## Funções Principais\n\n1. Gerenciamento de Contas Bancárias: Criação, atualização e consulta de contas bancárias.\n2. Depósitos: Realização de depósitos em contas.\n3. Saques: Processamento de saques em contas.\n4. Transferências: Transferências de fundos entre contas.\n5. Consulta de Saldo: Verificação dos saldos das contas.\n\n## Rotas da API\n\n### Contas Bancárias\n\n**Criar Conta Bancária**\n```http\nPOST /account/create\n```\nExemplo de requisição:\n```json\n{\n    \"accountNumber\": \"123456\",\n    \"balance\": 1000,\n    \"accountType\": \"Conta Corrente\",\n    \"agency\": \"0001\",\n    \"bankNumber\": \"001\",\n    \"openingDate\": \"2021-01-01\",\n    \"withdrawalLimit\": 1000,\n    \"userId\": \"30ab2214-d1cf-4d11-af5f-39596ad47524\"\n}\n```\n\n**Buscar Detalhes da Conta Bancária**\n```http\nGET /account/:id\n```\nExemplo de requisição:\n```http\nGET /account/30ab2214-d1cf-4d11-af5f-39596ad47524\n```\n\n**Excluir Conta Bancária**\n```http\nDELETE /account/:id\n```\nExemplo de requisição:\n```http\nDELETE /account/30ab2214-d1cf-4d11-af5f-39596ad47524\n```\n\n### Usuários\n\n**Criar Usuário**\n```http\nPOST /user/create\n```\nExemplo de requisição:\n```json\n{\n    \"name\": \"João da Silva\",\n    \"cpf\": \"12345678901\"\n}\n```\n\n**Buscar Detalhes do Usuário**\n```http\nGET /user/:id\n```\nExemplo de requisição:\n```http\nGET /user/30ab2214-d1cf-4d11-af5f-39596ad47524\n```\n\n**Listar Todos os Usuários**\n```http\nGET /user\n```\nExemplo de requisição:\n```http\nGET /user\n```\nExemplo de resposta:\n```json\n[\n    {\n        \"id\": \"30ab2214-d1cf-4d11-af5f-39596ad47524\",\n        \"name\": \"João da Silva\",\n        \"cpf\": \"12345678901\",\n        \"created_at\": \"2021-01-01T00:00:00.000Z\"\n    }\n]\n```\n\n**Excluir Usuário**\n```http\nDELETE /user/:id\n```\nExemplo de requisição:\n```http\nDELETE /user/30ab2214-d1cf-4d11-af5f-39596ad47524\n```\n\n### Transações\n\n**Realizar Depósito**\n```http\nPOST /deposit\n```\nExemplo de requisição:\n```json\n{\n    \"id\": \"30ab2214-d1cf-4d11-af5f-39596ad47524\",\n    \"amount\": 1000\n}\n```\n\n**Realizar Saque**\n```http\nPOST /withdraw\n```\nExemplo de requisição:\n```json\n{\n    \"id\": \"30ab2214-d1cf-4d11-af5f-39596ad47524\",\n    \"amount\": 1000\n}\n```\n\n**Realizar Transferência**\n```http\nPOST /transfer\n```\nExemplo de requisição:\n```json\n{\n    \"id\": \"30ab2214-d1cf-4d11-af5f-39596ad47524\",\n    \"amount\": 1000,\n    \"accountNumber\": \"123456\"\n}\n```\n\n## Exemplos de Uso - Screenshot \n\n**Buscar Detalhes da Conta Bancária**\n\n![GET /account/:id](prints/get_account.png)\n\n\n**Buscar Detalhes dos Usuários**\n\n![GET /user/:id](prints/get_user.png)\n## Padrão de Design\n\nO projeto segue os princípios SOLID, promovendo a criação de código modular, coeso e de fácil manutenção. O código está organizado em pastas por responsabilidade, incluindo entidades, casos de uso, repositórios e rotas.\n\nPara a interação com o banco de dados, foi implementado o padrão Repository usando o Prisma. As interfaces de repositório estabelecem contratos de comunicação com o banco de dados, enquanto as implementações concretas no diretório 'repositories/implementations' encapsulam a lógica de acesso.\n\nEste projeto serve como um exemplo de como construir uma API de banco digital seguindo boas práticas de desenvolvimento e design.\n\n## Explicação de Pastas e Arquivos\n\n    src/entities/: Contém as entidades (modelos de dados) da aplicação, como Account e Transaction.\n\n    src/useCases/: Contém pastas para cada caso de uso. Cada pasta representa um caso de uso diferente que a aplicação oferece.\n\n        CreateAccount/: Contém o controlador e o serviço para criar uma conta.\n\n        GetAccount/: Contém o controlador e o serviço para obter uma conta \n\n        Deposit/: Contém o controlador e o serviço para realizar um depósito.\n\n        Withdraw/: Contém o controlador e o serviço para realizar um saque.\n\n        GetAccountBalance/: Contém o controlador e o serviço para obter o saldo da conta.\n\n        Transfer/: Contém o controlador e o serviço para realizar uma transferência entre contas.\n\n    src/repositories/: Contém as interfaces que estabelecem o contrato de comunicação do caso de uso com o banco de dados.\n\n    src/repositories/implementations/: Contém as implementações concretas dos repositórios, usando Postgres.\n\n    src/routes/: Contém os arquivos de definição das rotas do Express para cada entidade. Aqui você agrupa as rotas relacionadas a contas e transações.\n\n    src/app.ts: Aqui você configura o servidor Express, define o middleware, roteia as requisições e lida com a inicialização do servidor.\n\n    prisma/: Contém o arquivo schema.prisma para configurar a conexão com o banco de dados e definir os modelos do Prisma.\n\nEssa estrutura enfatiza a separação das responsabilidades e a organização por casos de uso, o que torna o projeto mais escalável e fácil de manter. Os \"use cases\" são classes que encapsulam a lógica de negócios específica para cada cenário, enquanto as \"entities\" representam as estruturas de dados do seu domínio. Isso facilita a adição de novos casos de uso ou alterações futuras sem afetar outras partes do sistema.\n\n## Como Usar\n\n1. Clone o repositório.\n2. Instale as dependências com `npm install`.\n3. Configure o arquivo 'prisma/schema.prisma' de acordo com suas necessidades.\n4. Execute `npx prisma migrate dev` para aplicar as migrações.\n5. Inicie o servidor com `npm run dev`.\n\n---\n\nSinta-se à vontade para ajustar este README conforme necessário para refletir os detalhes específicos do seu projeto. Esperamos que este projeto seja uma base sólida para a construção de sua API de banco digital!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxsonferovante%2Fmybank-api-rest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxsonferovante%2Fmybank-api-rest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxsonferovante%2Fmybank-api-rest/lists"}