An open API service indexing awesome lists of open source software.

https://github.com/denisson-pereira/node-api-with-mongo-atlas

Este projeto é uma API RESTful desenvolvida em Node.js com TypeScript, seguindo os princípios de Clean Architecture e Clean Code. O deploy foi realizado na Vercel, permitindo fácil acesso e escalabilidade.
https://github.com/denisson-pereira/node-api-with-mongo-atlas

api-rest clean-architecture clean-code css3 docker hexagonal-architecture html5 mongodb mongodb-atlas nodejs solid typescript vercel

Last synced: 3 months ago
JSON representation

Este projeto é uma API RESTful desenvolvida em Node.js com TypeScript, seguindo os princípios de Clean Architecture e Clean Code. O deploy foi realizado na Vercel, permitindo fácil acesso e escalabilidade.

Awesome Lists containing this project

README

          

# 📗 Node API With MongoDB Atlas

# 🔍 Explore a Aplicação em Funcionamento

Convidamos você a explorar a aplicação **"Node API With MongoDB Atlas"** em sua versão online:

[![NPM](https://img.shields.io/badge/Clique%20Aqui-8A2BE2)](https://node-api-with-mongo-atlas.vercel.app/)

# 📑 Sobre o projeto

Este projeto é uma **API** desenvolvida em **Node.js** com **TypeScript**, seguindo os princípios da **Clean Architecture** e **Clean Code**. O *deploy* foi realizado na **Vercel**, permitindo fácil acesso e escalabilidade.

# 📚 Stack Tecnológica

![Vercel](https://img.shields.io/badge/vercel-%23000000.svg?style=for-the-badge&logo=vercel&logoColor=white)
![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge&logo=node.js&logoColor=white)
![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white)
![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white)
![MongoDB](https://img.shields.io/badge/MongoDB-%234ea94b.svg?style=for-the-badge&logo=mongodb&logoColor=white)
![Jest](https://img.shields.io/badge/-jest-%23C21325?style=for-the-badge&logo=jest&logoColor=white)
![HTML5](https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge&logo=html5&logoColor=white)
![CSS3](https://img.shields.io/badge/css3-%231572B6.svg?style=for-the-badge&logo=css3&logoColor=white)

# 🧱 Arquitetura e Design

Computador iuriCode

O planejamento desta aplicação foi desenvolvido com base no **data-driven design**, que orienta as decisões de *design* a partir das necessidades e interações dos dados, garantindo flexibilidade e escalabilidade. A arquitetura escolhida foi a **Clean Architecture**, que promove a separação clara entre as regras de negócios e os detalhes de implementação, protegendo o sistema de dependências diretas de *frameworks*. Isso permite, por exemplo, substituir o **MongoDB** por outro banco de dados sem impactar as entidades ou casos de uso, mantendo a aplicação independente de tecnologias específicas. Além disso, conceitos da arquitetura hexagonal foram aplicados, utilizando contratos (*ports*) e implementações (*adapters*) para garantir a comunicação entre as camadas do sistema de forma desacoplada, em conformidade com a regra da dependência.

# 🏛️ SOLID

• **Single Responsibility Principle:** A aplicação segue o princípio da responsabilidade única, garantindo que cada classe ou módulo tenha uma única responsabilidade;

• **Open/Closed Principle:** A arquitetura da aplicação adota o princípio aberto/fechado, ou seja, ela está aberta para extensões, mas fechada para modificações. Isso significa que novas funcionalidades podem ser adicionadas sem a necessidade de alterar o código existente;

• **Dependency Inversion Principle:** O princípio da inversão de dependência é seguido, permitindo que os módulos de alto nível (como as regras de negócio) dependam de abstrações, e não de implementações concretas. Isso é alcançado utilizando Ports e Adapters, onde as interfaces (ports) representam contratos de comunicação, e as implementações concretas (adapters) fornecem a funcionalidade necessária. Isso permite que a aplicação seja facilmente modificada ou adaptada a novas tecnologias, sem afetar as regras de negócio.

# 🧪 Testes Automatizados e Garantia de Funcionamento

Com a **Clean Architecture**, as regras de negócio podem ser testadas de forma independente da interface do usuário, banco de dados, servidor *web* ou qualquer outro componente externo. Para garantir essa independência, foi utilizado o **Jest** para criar testes com repositórios *mockados*, assegurando a validação das lógicas de negócio de maneira isolada e eficiente. Ademais, a aplicação conta com o Docker para facilitar a criação, distribuição e execução de contêineres, garantindo um ambiente de desenvolvimento e produção consistente e isolado.

# 📕 Documentação e Curiosidades

O projeto não utiliza *frameworks* como *Express*, sendo desenvolvido com o módulo **HTTP** nativo do **Node.js**. Dessa forma, a documentação foi criada manualmente com **HTML5** e **CSS3** puro, incluindo até mesmo as rotas configuradas de forma personalizada. Por fim, As variáveis de ambiente são gerenciadas com o uso do arquivo **.env**, assegurando maior segurança e flexibilidade na configuração.

# 🚨 Aguarde! Ainda não terminou!

>Este projeto está atualmente em desenvolvimento, e está sujeito a futuras atualizações e melhorias conforme evolui. Estamos trabalhando para torná-lo ainda mais robusto e funcional ao longo do tempo. Agradecemos sua paciência e interesse nesta fase inicial.

>Por fim, gostaríamos de ressaltar que este projeto é aberto a contribuições de qualquer pessoa interessada em colaborar. Se você tem ideias, sugestões ou melhorias para oferecer, sinta-se à vontade para participar do desenvolvimento do projeto. Juntos, podemos criar algo incrível e beneficiar a comunidade de forma colaborativa.

## 📜 Licença

[![NPM](https://img.shields.io/npm/l/react)](https://github.com/Denisson-Pereira/node-api-with-mongo-atlas/blob/main/LICENSE)

## ✏️ Autor

Denisson Pereira Santos