{"id":23910534,"url":"https://github.com/denisson-pereira/node-api-with-mongo-atlas","last_synced_at":"2026-04-07T20:32:43.224Z","repository":{"id":271018201,"uuid":"908376445","full_name":"Denisson-Pereira/node-api-with-mongo-atlas","owner":"Denisson-Pereira","description":"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.","archived":false,"fork":false,"pushed_at":"2025-01-05T13:25:29.000Z","size":360,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-23T17:13:42.090Z","etag":null,"topics":["api-rest","clean-architecture","clean-code","css3","docker","hexagonal-architecture","html5","mongodb","mongodb-atlas","nodejs","solid","typescript","vercel"],"latest_commit_sha":null,"homepage":"https://node-api-with-mongo-atlas.vercel.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Denisson-Pereira.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-12-25T23:03:32.000Z","updated_at":"2025-01-05T13:25:32.000Z","dependencies_parsed_at":"2025-01-04T20:30:06.061Z","dependency_job_id":"bbcc17b1-fdd5-47bf-9eb5-1cd14b6c1552","html_url":"https://github.com/Denisson-Pereira/node-api-with-mongo-atlas","commit_stats":null,"previous_names":["denisson-pereira/node-api-with-mongo-atlas"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Denisson-Pereira/node-api-with-mongo-atlas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Denisson-Pereira%2Fnode-api-with-mongo-atlas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Denisson-Pereira%2Fnode-api-with-mongo-atlas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Denisson-Pereira%2Fnode-api-with-mongo-atlas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Denisson-Pereira%2Fnode-api-with-mongo-atlas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Denisson-Pereira","download_url":"https://codeload.github.com/Denisson-Pereira/node-api-with-mongo-atlas/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Denisson-Pereira%2Fnode-api-with-mongo-atlas/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279016600,"owners_count":26085852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","clean-architecture","clean-code","css3","docker","hexagonal-architecture","html5","mongodb","mongodb-atlas","nodejs","solid","typescript","vercel"],"created_at":"2025-01-05T07:17:04.393Z","updated_at":"2025-10-13T18:42:27.008Z","avatar_url":"https://github.com/Denisson-Pereira.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📗 Node API With MongoDB Atlas\n\n# 🔍 Explore a Aplicação em Funcionamento\n\nConvidamos você a explorar a aplicação **\"Node API With MongoDB Atlas\"** em sua versão online: \n\n[![NPM](https://img.shields.io/badge/Clique%20Aqui-8A2BE2)](https://node-api-with-mongo-atlas.vercel.app/)\n\n# 📑 Sobre o projeto \n\nEste 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.\n\n# 📚 Stack Tecnológica\n\n![Vercel](https://img.shields.io/badge/vercel-%23000000.svg?style=for-the-badge\u0026logo=vercel\u0026logoColor=white)\n![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge\u0026logo=node.js\u0026logoColor=white)\n![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)\n![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white)\n![MongoDB](https://img.shields.io/badge/MongoDB-%234ea94b.svg?style=for-the-badge\u0026logo=mongodb\u0026logoColor=white)\n![Jest](https://img.shields.io/badge/-jest-%23C21325?style=for-the-badge\u0026logo=jest\u0026logoColor=white)\n![HTML5](https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge\u0026logo=html5\u0026logoColor=white)\n![CSS3](https://img.shields.io/badge/css3-%231572B6.svg?style=for-the-badge\u0026logo=css3\u0026logoColor=white)\n\n# 🧱 Arquitetura e Design\n\n\u003cimg src=\"./assets/clean.png\" min-width=\"100px\" max-width=\"100px\" width=\"300px\" align=\"right\" alt=\"Computador iuriCode\"\u003e\n\nO 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.\n\n# 🏛️ SOLID\n\n• **Single Responsibility Principle:** A aplicação segue o princípio da responsabilidade única, garantindo que cada classe ou módulo tenha uma única responsabilidade;\n\n• **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;\n\n• **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.\n\n# 🧪 Testes Automatizados e Garantia de Funcionamento\n\nCom 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.\n\n# 📕 Documentação e Curiosidades\n\nO 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.\n\n# 🚨 Aguarde! Ainda não terminou!\n\n\u003eEste 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.\n\n\u003ePor 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.\n\n## 📜 Licença\n\n[![NPM](https://img.shields.io/npm/l/react)](https://github.com/Denisson-Pereira/node-api-with-mongo-atlas/blob/main/LICENSE) \n\n## ✏️ Autor \n\nDenisson Pereira Santos\n\n\u003cdiv\u003e \n\u003ca href=\"https://www.linkedin.com/in/denissonpereira/\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/-LinkedIn-%230077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\"  target=\"_blank\"\u003e\u003c/a\u003e \n\u003ca href=\"https://denissonpereira.com\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/Meu%20Site-%2333cc33?style=for-the-badge\u0026logo=fontawesome\u0026logoColor=white\u0026logoWidth=15\u0026labelColor=black\"  target=\"_blank\"\u003e\u003c/a\u003e \n\u003ca href=\"https://github.com/Denisson-Pereira\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/GitHub-%23181717?style=for-the-badge\u0026logo=github\u0026logoColor=white\u0026logoWidth=15\u0026labelColor=black\"  target=\"_blank\"\u003e\u003c/a\u003e \n\u003ca href=\"https://www.instagram.com/denisson_pereira1?igshid=OGQ5ZDc2ODk2ZA%3D%3D\u0026utm_source=qr\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/-Instagram-%23E4405F?style=for-the-badge\u0026logo=instagram\u0026logoColor=white\"\u003e\u003c/a\u003e\n\u003c/div\u003e\u0026nbsp;\u0026nbsp;","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdenisson-pereira%2Fnode-api-with-mongo-atlas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdenisson-pereira%2Fnode-api-with-mongo-atlas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdenisson-pereira%2Fnode-api-with-mongo-atlas/lists"}