Executando verificação de segurança...
3

Pitch: Um Caixa Eletrônico Que Roda Na Web??

Um Caixa Eletrônico que roda na web?? Como assim??

Tá bom, talvez esse título tenha sido chamativo demais, mas o projeto é interessante, cola aí!

A ideia

A umas semanas atrás, durante a disciplina de POO da minha graduação, nos foi solicitado a produção de um projeto orientado a objetos.
Dias depois, estava resolvendo umas pendências em um banco bem famoso no nosso país, e a situação é padrão, um caixa eletrônico com uma interface datada e nada intuitiva. Eis que minha mente pensa "-Humm, e se?". Juntando o útil ao agradável, dei início ao layout e codificação de um simulador de caixa eletrônico que fosse mais moderno e mais amigável ao público geral. Por ser um dev web, o projeto está se concentrando em uma API Rest com Node.js no backend e React.js no frontend. Como o projeto tinha que ser orientado a objetos, está uma mistira de typescript com OO.

Sou iniciante e o projeto ainda está em desenvolvimento, então aceito sugestões de funcionalidades ou tecnologias para utilizar.

Screenshots

Não consegui colocá-las aqui na postagem, mas podem ser vistas no Read.me lá no github.

Repositórios

Front-end: https://github.com/lehinfo-felix/return-bank

API: https://github.com/lehinfo-felix/return-bank-api

Carregando publicação patrocinada...
2

Algo que me chamou a atenção na API é o uso de class no nome dos arquivos, User.class.ts, por exemplo.
Não compreendi o uso dessa notação e para ser sincero, acredito que se seja desnecessário, pois não impacta em nada a leitura com a ausência desse class.

Pontos que podem ser explorados no estudo

Diminuir boilerplate das classes

Notei que as entidades foram criadas para ser somente leitura, com todos os atributos privados.
É possível reescrever com uma quantidade menor de código.

Original

class Transfer {
  id
  private _senderTransaction
  private _receiver
  private _cash

  constructor(
    id: string,
    _senderTransaction: Transaction,
    _receiver: User,
    _cash: number,
  ) {
    this.id = id
    this._senderTransaction = _senderTransaction
    this._receiver = _receiver
    this._cash = _cash
  }

  public get senderTransaction(): Transaction {
    return this._senderTransaction
  }

  public get receiver(): User {
    return this._receiver
  }

  public get cash(): number {
    return this._cash
  }
}

Modificado

class Transfer {
  id
  readonly senderTransaction
  readonly receiver
  readonly cash

  constructor(
    id: string,
    senderTransaction: Transaction,
    receiver: User,
    cash: number,
  ) {
    this.id = id
    this.senderTransaction = senderTransaction
    this.receiver = receiver
    this.cash = cash
  }
}

Modificado V2

class Transfer {
  constructor(
    id: string,
    readonly senderTransaction: Transaction,
    readonly receiver: User,
    readonly cash: number,
  ) {}
}

Documentação

Senti falta de uma documentação da API, para compreender quais ações são possíveis, o que é esperado de entrada e seus respectivos retornos.

Testes

É um ótimo projeto para realizar a implementação de testes, tanto unitários quanto de integração.

Compreensão da regra de negócio

Embora um sistema de saque e transferência pareça simples, há algo que precisa ser observado.
Não é possível deletar ou alterar ações bancárias, isso faz parte do histórico.
As transações deveriam seguir como lançamentos contábeis e caso a pessoa queria desfazer uma transação errada, ela deve realizar outra transação que anule a anterior.

1

Amigo, trabalho em um banco — não na área de TI, mas de atendimento ao público. Gostaria de esclarecer algumas coisas.

Sim, modernizar a interface dos ATMs é necessário. Mas é extremamente desafiador — muito, muito desafiador mesmo. E sempre que há qualquer alteração no layout o suporte sofre.

Antes de continuar falando especificamente da interface dos ATMs, gostaria de contar uma história. Uma vez o pessoal que desenvolve o app resolveu retirar os labels da BottomNavigationBar e deixar só os ícones. O suporte e a rede sofreram para atender os clientes. O que antes era "Toca em perfil" virou "Toca na carinha", "Toca na pessoinha", "Toca no bonequinho", etc — decisões erradas, apenas modernizar por modernizar.

Voltando aos ATMs — uma vez resolveram que a disposição dos menus deveriam ser personalizados de acordo com o usuário. Resultado: suporte e rede sofreram com a falta de padrão — foi um verdadeiro inferno para atender e entender os clientes e os funcionários do auto atendimento passaram a demorar o dobro do tempo para ajudar em tarefas simples/mecânicas.

E sim, também já testaram uma tela totalmente reformulada para touch (sem utilizar menus e aqueles botões físicos laterais), o que também foi desastroso para o suporte — sem contar que houve um êxodo de usuários desistindo de utilzar o ATM e procurando o atendimento presencial. De todas as "modernizações", esta foi a pior e a que a rede mais comemorou quando retiraram.

Enfim, existem sim iniciativas de modernização da interface dos ATMs dentro dos bancos, mas qualquer pequena alteração tem consequências em cascata e, sob diversos aspectos, a interface "arcaica" é, na prática, de simples entendimento para o usuário (intuitiva?), fácil de fornecer suporte e ágil para realização de tarefas mecânicas.

1

Muito obrigado pelo posicionamento aqui na postagem. Sempre imaginei que houvesse algo a diferente do que a simples "má vontade" (entre muitas aspas) para a modernização dessas interfaces. Agora entendo que é algo bem maior do que imaginava. Mesmo assim, fica aí a ideia do meu projeto de conceito de um "como seria", se fosse algo fácil 😅

1

Bem legal mano, olhei o site e a api tá apontando pra um ip local.
Recebi esse erro:

Mixed Content: The page at '' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ''. This request has been blocked; the content must be served over HTTPS.

Mixed Content: The page at 'https://return-bank-web.vercel.app/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://192.168.0.41:3000/api/auth/login'. This request has been blocked; the content must be served over HTTPS.

1

Como está em desenvolvimento, estou rodando tanto a API quanto o frontend na minha máquina. Se n me engano esta apontando para a porta 3000 do localhost

0

JS puro já é 100% orientado a objetos! Não preciasa de typescript!

A ideia é bem legal, mas creio que não exista por algum motivo extra.

Quem sabe segurança! Mas não sei!

1

Esse projeto é mais para a conclusão da disciplina, então não sei bem o que colocar nele ao certo. Iniciei com a cara e coragem kkkk

3
2