{"id":29812098,"url":"https://github.com/adrianmdeiros/api-nodejs-arquitetura-hexagonal","last_synced_at":"2026-04-09T02:02:29.982Z","repository":{"id":256301605,"uuid":"854887851","full_name":"adrianmdeiros/api-nodejs-arquitetura-hexagonal","owner":"adrianmdeiros","description":"Exemplo de projeto com arquitetura hexagonal utilizando Node.js e TypeScript.","archived":false,"fork":false,"pushed_at":"2025-09-23T23:07:45.000Z","size":795,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-24T01:10:04.814Z","etag":null,"topics":["express-js","hexagonal-architecture","nodejs","ports-and-adapters","postgresql","prisma-orm","sqlite","typescript","zod"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adrianmdeiros.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-09-09T23:55:52.000Z","updated_at":"2025-09-23T23:07:48.000Z","dependencies_parsed_at":"2025-07-25T06:33:44.029Z","dependency_job_id":null,"html_url":"https://github.com/adrianmdeiros/api-nodejs-arquitetura-hexagonal","commit_stats":null,"previous_names":["adrianmdeiros/arquitetura-hexagonal-express-ts","adrianmdeiros/api-nodejs-arquitetura-hexagonal"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/adrianmdeiros/api-nodejs-arquitetura-hexagonal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianmdeiros%2Fapi-nodejs-arquitetura-hexagonal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianmdeiros%2Fapi-nodejs-arquitetura-hexagonal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianmdeiros%2Fapi-nodejs-arquitetura-hexagonal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianmdeiros%2Fapi-nodejs-arquitetura-hexagonal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adrianmdeiros","download_url":"https://codeload.github.com/adrianmdeiros/api-nodejs-arquitetura-hexagonal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianmdeiros%2Fapi-nodejs-arquitetura-hexagonal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31581864,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"online","status_checked_at":"2026-04-09T02:00:06.848Z","response_time":112,"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":["express-js","hexagonal-architecture","nodejs","ports-and-adapters","postgresql","prisma-orm","sqlite","typescript","zod"],"created_at":"2025-07-28T17:36:38.664Z","updated_at":"2026-04-09T02:02:29.977Z","avatar_url":"https://github.com/adrianmdeiros.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🛠️ Arquitetura Hexagonal\n\u003cdiv\u003e\n\u003cimg title=\"TypeScript\" align=\"center\" height=\"30\" width=\"40\" src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/typescript/typescript-original.svg\" /\u003e\n\u003cimg title=\"Node.js\" align=\"center\" height=\"30\" width=\"40\" src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/nodejs/nodejs-original.svg\" /\u003e\n\u003cimg title=\"Express.js\" align=\"center\" height=\"30\" width=\"40\" src=\"https://icongr.am/devicon/express-original.svg?si40\u0026color=ffffff\" /\u003e\n\u003cimg title=\"Prisma ORM\" align=\"center\" height=\"30\" width=\"30\" src=\"https://creazilla-store.fra1.digitaloceanspaces.com/icons/3256965/file-type-prisma-icon-md.png\" /\u003e  \n\u003cimg title=\"PostgreSQL\" align=\"center\" height=\"30\" width=\"30\" src=\"https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/postgresql/postgresql-original.svg\" /\u003e  \n\u003c/div\u003e\n\n---\n\nA __Arquitetura Hexagonal__, também conhecida como *Ports and Adapters*, é uma abordagem de design que visa isolar o núcleo da aplicação das dependências externas, como bancos de dados, interfaces de usuário, serviços externos, entre outros. Isso facilita a manutenção, teste e evolução do software. \n\n## 🏗️ Estrutura\n\n- **Núcleo da Aplicação** 🧩\n  - Contém a lógica de negócio e as regras da aplicação.\n  - É totalmente independente de detalhes técnicos externos.\n  - Inclui as entidades, serviços de domínio e casos de uso.\n\n- **Portas** 🚪\n  - São as interfaces que definem como o núcleo interage com o mundo externo.\n  - Podem ser entradas (Input Ports) ou saídas (Output Ports).\n\n- **Adaptadores** 🔌\n  - Implementam as portas para conectar o núcleo às tecnologias externas.\n  - Podem ser adaptadores para bancos de dados, APIs REST, interfaces gráficas, etc.\n  - Garantem que o núcleo permaneça desacoplado das ferramentas externas.\n\n## 🔄 Fluxo de Dados\n\n1. **Entrada** 🎮: Um evento externo aciona uma porta de entrada.\n2. **Núcleo** 🧠: A lógica de negócio processa o evento, tomando decisões e realizando operações.\n3. **Saída** 📤: Se necessário, o núcleo usa uma porta de saída para interagir com um sistema externo.\n\n## 🎯 Benefícios\n\n- **Desacoplamento** 🔗: A lógica de negócio não depende de frameworks ou tecnologias externas.\n- **Testabilidade** 🧪: Fica mais fácil testar o núcleo sem precisar de componentes externos.\n- **Facilidade de Mudança** 🔄: Mudanças nos adaptadores não afetam o núcleo da aplicação.\n\n\u003cbr/\u003e\n\n### Diagrama de Contexto\n\u003cimg src=\"./github/diagrama-de-contexto.png\" alt=\"Diagrama de contexto do sistema.\" /\u003e\n\n---\n\n### Diagrama de Container\n\u003cimg src=\"./github/diagrama-de-container.png\" alt=\"Diagrama de container do sistema.\" /\u003e\n\n---\n\n### Diagrama de Componente\n\u003cimg src=\"./github/diagrama-de-componente.png\" alt=\"Diagrama de componente do sistema.\" /\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadrianmdeiros%2Fapi-nodejs-arquitetura-hexagonal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadrianmdeiros%2Fapi-nodejs-arquitetura-hexagonal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadrianmdeiros%2Fapi-nodejs-arquitetura-hexagonal/lists"}