GithubHelp home page GithubHelp logo

maxsonferovante / mybank-api-rest Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 162 KB

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.

TypeScript 98.99% Dockerfile 1.01%
expressjs nodejs postgresql prisma typescript

mybank-api-rest's Introduction

API de Banco Digital

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.

NodeJS TypeScript Express.js Prisma

Tecnologias Utilizadas

  • Node.js: Ambiente de execução JavaScript.
  • TypeScript: Linguagem que adiciona tipagem estática ao JavaScript.
  • Express: Framework web para construir APIs.
  • Prisma: ORM para acesso ao banco de dados.
  • PostgreSQL: Banco de dados relacional usado com o Prisma.

Funções Principais

  1. Gerenciamento de Contas Bancárias: Criação, atualização e consulta de contas bancárias.
  2. Depósitos: Realização de depósitos em contas.
  3. Saques: Processamento de saques em contas.
  4. Transferências: Transferências de fundos entre contas.
  5. Consulta de Saldo: Verificação dos saldos das contas.

Rotas da API

Contas Bancárias

Criar Conta Bancária

POST /account/create

Exemplo de requisição:

{
    "accountNumber": "123456",
    "balance": 1000,
    "accountType": "Conta Corrente",
    "agency": "0001",
    "bankNumber": "001",
    "openingDate": "2021-01-01",
    "withdrawalLimit": 1000,
    "userId": "30ab2214-d1cf-4d11-af5f-39596ad47524"
}

Buscar Detalhes da Conta Bancária

GET /account/:id

Exemplo de requisição:

GET /account/30ab2214-d1cf-4d11-af5f-39596ad47524

Excluir Conta Bancária

DELETE /account/:id

Exemplo de requisição:

DELETE /account/30ab2214-d1cf-4d11-af5f-39596ad47524

Usuários

Criar Usuário

POST /user/create

Exemplo de requisição:

{
    "name": "João da Silva",
    "cpf": "12345678901"
}

Buscar Detalhes do Usuário

GET /user/:id

Exemplo de requisição:

GET /user/30ab2214-d1cf-4d11-af5f-39596ad47524

Listar Todos os Usuários

GET /user

Exemplo de requisição:

GET /user

Exemplo de resposta:

[
    {
        "id": "30ab2214-d1cf-4d11-af5f-39596ad47524",
        "name": "João da Silva",
        "cpf": "12345678901",
        "created_at": "2021-01-01T00:00:00.000Z"
    }
]

Excluir Usuário

DELETE /user/:id

Exemplo de requisição:

DELETE /user/30ab2214-d1cf-4d11-af5f-39596ad47524

Transações

Realizar Depósito

POST /deposit

Exemplo de requisição:

{
    "id": "30ab2214-d1cf-4d11-af5f-39596ad47524",
    "amount": 1000
}

Realizar Saque

POST /withdraw

Exemplo de requisição:

{
    "id": "30ab2214-d1cf-4d11-af5f-39596ad47524",
    "amount": 1000
}

Realizar Transferência

POST /transfer

Exemplo de requisição:

{
    "id": "30ab2214-d1cf-4d11-af5f-39596ad47524",
    "amount": 1000,
    "accountNumber": "123456"
}

Exemplos de Uso - Screenshot

Buscar Detalhes da Conta Bancária

GET /account/:id

Buscar Detalhes dos Usuários

GET /user/:id

Padrão de Design

O 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.

Para 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.

Este projeto serve como um exemplo de como construir uma API de banco digital seguindo boas práticas de desenvolvimento e design.

Explicação de Pastas e Arquivos

src/entities/: Contém as entidades (modelos de dados) da aplicação, como Account e Transaction.

src/useCases/: Contém pastas para cada caso de uso. Cada pasta representa um caso de uso diferente que a aplicação oferece.

    CreateAccount/: Contém o controlador e o serviço para criar uma conta.

    GetAccount/: Contém o controlador e o serviço para obter uma conta 

    Deposit/: Contém o controlador e o serviço para realizar um depósito.

    Withdraw/: Contém o controlador e o serviço para realizar um saque.

    GetAccountBalance/: Contém o controlador e o serviço para obter o saldo da conta.

    Transfer/: Contém o controlador e o serviço para realizar uma transferência entre contas.

src/repositories/: Contém as interfaces que estabelecem o contrato de comunicação do caso de uso com o banco de dados.

src/repositories/implementations/: Contém as implementações concretas dos repositórios, usando Postgres.

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.

src/app.ts: Aqui você configura o servidor Express, define o middleware, roteia as requisições e lida com a inicialização do servidor.

prisma/: Contém o arquivo schema.prisma para configurar a conexão com o banco de dados e definir os modelos do Prisma.

Essa 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.

Como Usar

  1. Clone o repositório.
  2. Instale as dependências com npm install.
  3. Configure o arquivo 'prisma/schema.prisma' de acordo com suas necessidades.
  4. Execute npx prisma migrate dev para aplicar as migrações.
  5. Inicie o servidor com npm run dev.

Sinta-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!

mybank-api-rest's People

Contributors

maxsonferovante avatar

Watchers

 avatar  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.