|
|
## :gear: Backend
|
|
|
|
|
|
#### Stacks definidas:
|
|
|
|
|
|
Linguagem de programação [![Static Badge](https://img.shields.io/badge/TypeScript-41B7FF?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org)
|
|
|
|
|
|
A decisão de utilizar o TypeScript se deve ao fato da busca por maior controle das variáveis e a familiaridade da equipe com o JavaScript.
|
|
|
|
|
|
Runtime [![Static Badge](https://img.shields.io/badge/Node_20.11.1-00BE23?style=flat-square&logo=tsnode&logoColor=white)](https://nodejs.org/en)
|
|
|
|
|
|
Utilizar Node.js com TypeScript proporciona um ambiente de desenvolvimento consistente tanto no lado do servidor quanto no cliente (se usar também o TypeScript no frontend). Isso pode simplificar o desenvolvimento full-stack.
|
|
|
|
|
|
Framework [![Static Badge](https://img.shields.io/badge/Nest-white?style=flat-square&logo=nestjs&logoColor=red)](https://nestjs.com/)
|
|
|
|
|
|
Nest (NestJS) é um framework para construção de aplicações eficientes e escaláveis no lado do servidor com Node.js. Ele utiliza JavaScript progressivo, é construído com suporte total a TypeScript (embora ainda permita que desenvolvedores programem em JavaScript puro) e combina elementos de OOP (Programação Orientada a Objetos), FP (Programação Funcional) e FRP (Programação Reativa Funcional).
|
|
|
|
|
|
Além disso seguimos uma arquitetura baseada no modelo de Controller-Service, utilizando o framework NestJS. Essa abordagem permite organizar as responsabilidades de forma clara e eficiente, separando a lógica de negócio da lógica de controle e roteamento.
|
|
|
|
|
|
![image](uploads/17197a05ea4b5f32c84888a42145333b/image.png)
|
|
|
|
|
|
**Controller:** A camada de controle, localizada na pasta controller, é responsável por receber as requisições HTTP, validar os dados recebidos e delegar as tarefas apropriadas para a camada de serviço. Por exemplo, o arquivo user.controller.ts gerencia todas as operações relacionadas aos usuários, como criação, atualização e obtenção de dados. Para garantir a qualidade do código, também utilizamos arquivos de teste, como o user.controller.spec.ts, para validar o comportamento esperado dos controladores.
|
|
|
|
|
|
**Service:** A camada de serviço, na pasta service, concentra toda a lógica de negócio. É aqui que ocorrem operações como manipulação de dados, chamadas ao banco de dados ou interações com APIs externas. O arquivo user.service.ts contém a lógica específica para gerenciar usuários, enquanto o arquivo user.service.spec.ts testa as funcionalidades implementadas, garantindo que os serviços funcionem corretamente.
|
|
|
|
|
|
**DTOs:** Na pasta dtos, são definidos os Data Transfer Objects, que padronizam os dados que transitam entre o cliente e o servidor. Por exemplo, o arquivo user.dto.ts define a estrutura esperada para as operações relacionadas aos usuários, garantindo que os dados estejam sempre consistentes e válidos.
|
|
|
|
|
|
**Módulo:** O arquivo user.module.ts registra o módulo de usuários, organizando todas as dependências, como controladores e serviços. Essa abordagem modular do NestJS facilita o isolamento de funcionalidades e torna a aplicação mais escalável e fácil de manter.
|
|
|
|
|
|
Essa estrutura modular, combinada com o modelo Controller-Service, promove uma separação clara de responsabilidades, garantindo que o código seja organizado, testável e fácil de escalar. O uso de testes unitários em arquivos .spec.ts demonstra um compromisso com a qualidade e a confiabilidade da aplicação. Essa arquitetura, aliada à organização do frontend, torna o sistema robusto e eficiente para desenvolvimento e manutenção contínuos. |
|
|
\ No newline at end of file |