{"id":27919513,"url":"https://github.com/jscodedevlopment/clean-architecure-back-end","last_synced_at":"2026-04-24T16:05:00.439Z","repository":{"id":242981962,"uuid":"811119242","full_name":"JsCodeDevlopment/Clean-Architecure-Back-End","owner":"JsCodeDevlopment","description":" Um backend em TypeScript com Clean Architecture e padrão de repositório é modular e escalável. Ele separa a lógica de negócios da infraestrutura e abstrai o acesso aos dados. Este boilerplate fornece uma base organizada com diretórios para entidades, casos de uso, repositórios e interfaces.","archived":false,"fork":false,"pushed_at":"2024-07-06T00:16:27.000Z","size":1770,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-07-06T03:44:02.398Z","etag":null,"topics":["express","pinned","prisma","typescript"],"latest_commit_sha":null,"homepage":"https://clean-architecure-back-end-typescript.vercel.app","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/JsCodeDevlopment.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}},"created_at":"2024-06-06T01:15:19.000Z","updated_at":"2024-07-06T00:16:30.000Z","dependencies_parsed_at":"2024-06-06T02:59:44.032Z","dependency_job_id":"ab8014db-f13d-46c0-b782-87a5ea6a47ff","html_url":"https://github.com/JsCodeDevlopment/Clean-Architecure-Back-End","commit_stats":null,"previous_names":["jscodedevlopment/clean-architecure-back-end"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JsCodeDevlopment%2FClean-Architecure-Back-End","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JsCodeDevlopment%2FClean-Architecure-Back-End/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JsCodeDevlopment%2FClean-Architecure-Back-End/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JsCodeDevlopment%2FClean-Architecure-Back-End/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JsCodeDevlopment","download_url":"https://codeload.github.com/JsCodeDevlopment/Clean-Architecure-Back-End/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252753374,"owners_count":21798947,"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","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","pinned","prisma","typescript"],"created_at":"2025-05-06T19:31:23.853Z","updated_at":"2026-04-24T16:04:55.382Z","avatar_url":"https://github.com/JsCodeDevlopment.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Boilerplate - Back-end Typescript + Clean Architecture\n\n## 💬 Descrição.\n\nEste projeto serve como um ponto de partida para a criação de aplicações backend robustas e bem estruturadas, utilizando as melhores práticas da Clean Architecture.\n\n## 🚧 Estrutura do Projeto.\n\n📂 **Esquema de pastas:** Este projeto segue os princípios da Clean Architecture, dividindo o código em camadas bem definidas:\n```\n  src/\n    |- domain\n    |- infra\n    |- package\n    |- usecases\n  main.ts\n\n  domain/\n    |-| product\n    |-----| entity\n    |---------- product.entity.ts\n    |-----| gateway\n    |---------product.gateway.ts\n\n  infra/\n    |-| api\n    |----| express\n    |---------| routes\n    |--------------| products\n    |--------------------| create\n    |-------------------------| dto\n    |----------------------------- create.dto.ts\n    |----------------------------- create.route.express.ts\n    |--------------------| list\n    |------------------------| dto\n    |---------------------------- list.dto.ts\n    |------------------------- list.route.express.ts\n    |--------------- api.express.ts\n    |--------------- route.ts\n    |-| repositories\n    |--------| product\n    |------------- product.repository.ts\n    |-| api.ts\n\n    package/\n     |--| prisma\n     |------- prisma.ts\n\n    usecases/\n     |--| products\n     |-------| create\n     |-----------| dto\n     |--------------- create.input.dto.ts\n     |--------------- create.output.dto.ts\n     |------------ create.usecase.ts\n     |-------| list\n     |-----------| dto\n     |--------------- list.input.dto.ts\n     |--------------- list.output.dto.ts\n     |------------ list.usecase.ts\n     |--- usecase.ts\n```\n## ⚙ Resumo da Estrutura.\n\n- **Entidade:** Define a estrutura e lógica de negócios básica da(s) Entidade(s).\n- **Caso de Uso (UseCase):** Implementa a lógica de aplicação específica para criação, edição, deleção, listage ou atualização de uma entidade.\n- **Configurações de Rota:** Define a abstração para as rotas HTTP.\n- **Rota Específica:** Implementa a lógica da rota para executar uma ação feita no usecase.\n- **Ponto de Entrada (Main):** Configura e inicializa a aplicação, incluindo a injeção de dependências.\n\n## 🪀 Fluxo da Aplicação.\n\n### Recepção da Requisição:\n- O cliente faz uma requisição HTTP ao servidor Express.\n- O servidor Express direciona a requisição para a rota apropriada com base no método HTTP e no caminho.\n\n### Rota:\n- A rota recebe a requisição e extrai os dados necessários.\n- Cria um DTO de entrada Ex.: (CreateProductInputDto) com os dados extraídos.\n- Chama o caso de uso Ex.: (CreateProductUsecase), passando o DTO de entrada.\n\n### Caso de Uso (UseCase):\n- O caso de uso recebe o DTO de entrada.\n- Cria uma instância da entidade Product usando o método Ex.: Product.create.\n- Interage com o repositório Ex.: (ProductGateway) para persistir o produto no banco de dados.\n- Gera um DTO de saída Ex.: (CreateProductOutputDto) com os dados do produto criado.\n\n### Repositório (Gateway):\n- Implementa a interface do repositório definida no domínio.\n- Usa Prisma para realizar operações no banco de dados.\n- Retorna os dados necessários para o caso de uso.\n\n### Resposta da Rota:\n- A rota recebe o DTO de saída do caso de uso.\n- Formata a resposta e envia de volta ao cliente.\n\n\n## 🎯 Instalação.\n1°→ Instalação das dependências:\n```bash\nnpm install\n# ou\nyarn install\n```\n2°→ Inicialização do Prisma:\n```bash\nnpx prisma init\n```\n3°→ Configure o banco de dados no arquivo `.env`:\n```env\nDATABASE_URL=\"postgresql://usuario:senha@localhost:5432/meubanco\"\n```\n4°→ Execute as migrações do Prisma para configurar o banco de dados:\n```bash\nnpx prisma migrate dev --name init\n```\n5°→ Execute a aplicação:\n```bash\nnpm run dev\n# ou\nyarn dev\n\n```\n\n## 💻 Tecnologias Utilizadas.\n\n \u003cdiv align=\"center\"\u003e\n  \u003cimage src=\"https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge\u0026logo=typescript\u0026logoColor=white\" /\u003e\n  \u003cimage src=\"https://img.shields.io/badge/Prisma-3982CE?style=for-the-badge\u0026logo=Prisma\u0026logoColor=white\" /\u003e\n  \u003cimage src=\"https://img.shields.io/badge/Express%20js-000000?style=for-the-badge\u0026logo=express\u0026logoColor=white\" /\u003e\n\u003c/div\u003e\n\n## 👨‍💻 Desenvolvedor.\n\n| Foto                                                                                                                           | Nome                                                 | Cargo               |\n| ------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------- | ------------------- |\n| \u003cimg src=\"https://avatars.githubusercontent.com/u/100796752?s=400\u0026u=ae99bd456c6b274cd934d85a374a44340140e222\u0026v=4\" width=\"100\"\u003e | [Jonatas Silva](https://github.com/JsCodeDevlopment) | FullStack Developer |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjscodedevlopment%2Fclean-architecure-back-end","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjscodedevlopment%2Fclean-architecure-back-end","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjscodedevlopment%2Fclean-architecure-back-end/lists"}