GithubHelp home page GithubHelp logo

yaralviana / projeto-integrador-banco-comunitario Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 244 KB

API for practicing NestJS, TypeORM, Hexagonal Architecture, Jest and CI/CD.

JavaScript 1.99% TypeScript 98.01%
jest nestjs node nodejs typescript

projeto-integrador-banco-comunitario's Introduction

{Astra}CommunityBank

Como testar

Clone o repositório:

git clone https://github.com/yaralviana/astra-community-bank

Entre na pasta do projeto:

cd astra-community-bank

Executar o projeto

  • Instalação das dependências:
npm i
  • Execução
npm run start:dev

Rotas para Gerenciamento de Gerentes

Rotas para Gerenciamento de Clientes sob um Gerente

Rotas para Gerenciamento de Contas de um Cliente sob um Gerente

Testes de Rotas para Processamento de Pagamentos

Críticas e sugestões são muito bem-vindas. 💜

projeto-integrador-banco-comunitario's People

Contributors

yaralviana avatar

Stargazers

Thais Maciel avatar Alessandro Thomaz Benedet avatar

Watchers

 avatar

projeto-integrador-banco-comunitario's Issues

Modificar para TypeORM

Objetivos de aprendizagem do desafio 🎯

  • Adicionar um banco de dados PostgreSQL à aplicação Reprograma Bank, implementar a gestão de transações, acessíveis a todos os clientes.

Implementação:

  • Configurar o banco de dados PostgreSQL.
  • Integrar um ORM (por exemplo, TypeORM ou Sequelize) para gerenciar interações com o banco de dados.
  • Implementar funcionalidade para registrar e consultar transações de depósito, saque e transferência nas contas.

Desafio - Semana 04

Objetivos de aprendizagem do desafio 🎯

Explorar práticas recomendadas para criar um design de código claro e eficiente
Aplicar SOLID, DRY e KISS
Implementar padrões de código PD_Factory, PD_Adapter, PD_Observer
Identificar como os padrões de design influenciam a estrutura e organização de um sistema.

{Reprograma}Bank - melhorando nossa aplicação

Nesta semana, o desafio é refatorar a aplicação desenvolvida anteriormente, aplicando práticas recomendadas para criar um design de código e eficiente. Além disso, serão aplicados os princípios SOLID (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion), DRY (Don't Repeat Yourself), KISS (Keep It Simple, Stupid) e alguns padrões de design, como Factory, Adapter e Observer.

Requisitos de negócio:

  • Adicionar a capacidade de realizar pagamentos de contas por PIX ou número de boleto.
  • O cliente deve possuir saldo em conta ou limite no cheque especial para efetuar a transação.

Sugestão de Estrutura de Pastas:

reprograma-bank/
├── src/
│ ├── controllers/
│ │ └── xxxController.ts
│ ├── models/
│ │ └── xxxModel.ts
│ ├── routes/
│ │ └── xxxRoutes.ts
│ ├── services/
│ │ └── xxxService.ts
│ └── index.ts
├── node_modules/
├── package.json
├── tsconfig.json
└── README.md

Na estrutura sugerida:

src/controllers/: Contém os controladores para manipular as requisições HTTP, lidando principalmente com a interação entre a API e o modelo de dados.
src/models/: Armazena os modelos de dados das entidades Cliente, Gerente e Conta, representando a estrutura de dados da aplicação.
src/routes/: Define as rotas da API para cada entidade, mapeando as solicitações HTTP para as funções correspondentes nos controladores.
src/services/: Armazena os serviços responsáveis por implementar a lógica de negócios da aplicação, mantendo a separação de responsabilidades e facilitando a reutilização do código.
src/index.ts: Arquivo principal que inicializa o servidor e conecta-se ao banco de dados, fornecendo a entrada para a aplicação.

Atividade para casa - Semana 03

Desafio Semanal

Objetivos de aprendizagem do desafio 🎯

  • Entender como o TypeScript, uma linguagem de programação superset de JavaScript, se integra naturalmente ao ecossistema do Node.js.
  • Compreender os princípios e características de uma arquitetura RESTful.
  • Identificar os recursos, URIs, métodos HTTP e códigos de status comuns em uma API REST.
  • Aprender a projetar e implementar uma API RESTful usando Node.js, seguindo as melhores práticas de REST.

{Reprograma}Bank

Disponibilizando nossa API

Seu desafio é criar uma API RESTful para o sistema bancário desenvolvido na semana 2, agora incluindo a funcionalidade de Gerente de Conta. O Gerente é responsável por gerenciar os clientes e suas contas, podendo abrir, fechar e modificar o tipo de conta.

Abaixo estão os requisitos:

Ao cliente do banco ser adicionadas as seguintes informações:

  • Contas
  • Gerente

Gerente deve ter as seguintes informações:

  • Nome completo
  • Número de identificação (ID)
  • Clientes

Requisitos de negócio:

  • Criar classes para representar Cliente e Gerente, incluindo os atributos mencionados no diagrama.
  • Implementar métodos nas classes Cliente e Gerente para abrir, fechar e modificar o tipo de conta.
  • Atualizar a classe Conta para manter uma referência ao cliente associado a ela.
  • Implementar métodos na classe Gerente para adicionar e remover clientes, bem como para abrir, fechar e modificar o tipo de conta para um determinado cliente.
  • Organizar a estrutura do projeto de forma apropriada, seguindo as melhores práticas para uma API RESTful.

Diagrama:

+---------------------------------+
|           Cliente               |
+---------------------------------+
| - nomeCompleto: string          |
| - id: string                    |
| - endereco: string              |
| - telefone: string              |
| - contas: ContaBancaria[]       |
| - gerente: Gerente              |
+---------------------------------+
| + constructor(...)              |
| + abrirConta(conta: ContaBancaria): void |
| + fecharConta(conta: ContaBancaria): void |
| + mudarTipoConta(conta: ContaBancaria, novoTipo: string): void |
+---------------------------------+
              |
              |
     +--------+---------+
     |                  |
+----v----+      +------v------+
| Conta   |      | ContaCorrente|
+---------+      +-------------+
| # saldo |      | # chequeEspecial: number
+---------+      +-------------+
| depositar(valor: number): void |
| sacar(valor: number): void     |
| verificarSaldo(): number       |
| transferir(destino: ContaBancaria, valor: number): void |
+-----------------+
        ^
        |
+-------+-------+
|               |
| ContaPoupanca |
+---------------+
| # taxaJuros: number
+---------------+
| calcularTaxa(): number |
| transferir(destino: ContaBancaria, valor: number): void |
+---------------+

+-----------------------+
|        Gerente        |
+-----------------------+
| - nomeCompleto: string|
| - id: string          |
| - clientes: Cliente[] |
+-----------------------+
| + constructor(...)    |
| + adicionarCliente(cliente: Cliente): void |
| + removerCliente(cliente: Cliente): void |
| + abrirConta(cliente: Cliente, tipoConta: string): void |
| + fecharConta(cliente: Cliente, conta: ContaBancaria): void |
| + mudarTipoConta(cliente: Cliente, conta: ContaBancaria, novoTipo: string): void |
+-----------------------+

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.