{"id":19511410,"url":"https://github.com/jamesbrel/node_clean_and_modular_arch","last_synced_at":"2026-04-29T22:38:27.969Z","repository":{"id":220516119,"uuid":"751843583","full_name":"JamesBrel/node_clean_and_modular_arch","owner":"JamesBrel","description":"Clean, modular architecture is a particularly interesting concept... for a project that is structured, maintainable and scalable without a hitch...","archived":false,"fork":false,"pushed_at":"2024-05-29T01:00:03.000Z","size":72,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-25T23:14:39.835Z","etag":null,"topics":["clean-architecture","express","inversify","inversify-express","javascript","modularization","nodejs","typescript"],"latest_commit_sha":null,"homepage":"","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/JamesBrel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"JamesBrel","custom":["thecoder38@gmail.com"]}},"created_at":"2024-02-02T12:59:13.000Z","updated_at":"2024-05-29T01:00:07.000Z","dependencies_parsed_at":"2024-05-29T03:47:25.909Z","dependency_job_id":"aa7e5374-3600-4263-92c9-934e2689e0b0","html_url":"https://github.com/JamesBrel/node_clean_and_modular_arch","commit_stats":null,"previous_names":["jamesbrel/node_clean_and_modular_arch"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JamesBrel/node_clean_and_modular_arch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JamesBrel%2Fnode_clean_and_modular_arch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JamesBrel%2Fnode_clean_and_modular_arch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JamesBrel%2Fnode_clean_and_modular_arch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JamesBrel%2Fnode_clean_and_modular_arch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JamesBrel","download_url":"https://codeload.github.com/JamesBrel/node_clean_and_modular_arch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JamesBrel%2Fnode_clean_and_modular_arch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275919073,"owners_count":25552549,"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-09-19T02:00:09.700Z","response_time":108,"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":["clean-architecture","express","inversify","inversify-express","javascript","modularization","nodejs","typescript"],"created_at":"2024-11-10T23:20:55.335Z","updated_at":"2025-09-19T10:24:13.759Z","avatar_url":"https://github.com/JamesBrel.png","language":"TypeScript","funding_links":["https://github.com/sponsors/JamesBrel","thecoder38@gmail.com"],"categories":[],"sub_categories":[],"readme":"# Node Server : Clean and Modular Architecture\n\n### Author : James Brel\n\n### Contact : thecoder38@gmail.com \n---\n\n\u003cimg src=\"img/typescript.png\" alt=\"logo\" width=\"200\" height=\"200\"\u003e\n\n---\n\n## Architecture \n   the architecture of each feature is based on the clean architecture of Uncle Bob which is constituted mainly of 3 layers :\n   - Data\n   - Domain\n   - Controllers  \n```\n📦features\n ┗ 📂say_hello_to_world\n ┃ ┣ 📂controllers\n ┃ ┣ 📂data\n ┃ ┗ 📂domain\n```  \n\n## General Folder Structure Tree \n```\n📦project\n ┣ 📂.vscode\n ┃ ┗ 📜settings.json\n ┣ 📂envs\n ┃ ┣ 📜dev.env\n ┃ ┣ 📜prod.env\n ┃ ┗ 📜staging.env\n ┣ 📂lib\n ┃ ┣ 📂src\n ┃ ┃ ┣ 📂core\n ┃ ┃ ┃ ┣ 📂configs\n ┃ ┃ ┃ ┃ ┣ 📜inversify.config.ts\n ┃ ┃ ┃ ┃ ┣ 📜middle.config.ts\n ┃ ┃ ┃ ┃ ┗ 📜server.config.ts\n ┃ ┃ ┃ ┗ 📜init.ts\n ┃ ┃ ┣ 📂modules\n ┃ ┃ ┃ ┗ 📂hello_mod\n ┃ ┃ ┃ ┃ ┗ 📂features\n ┃ ┃ ┃ ┃ ┃ ┗ 📂say_hello_to_world\n ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controllers\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜say_hello_to_world_controller.ts\n ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂data\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂data_source\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂impls\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜hello_to_world_impl.ts\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂interfaces\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜hello_to_world_inter.ts\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂models\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜.gitkeep\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂reposit_impls\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜system_greet_the_world_reposit_impl.ts\n ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂domain\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂entities\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜.gitkeep\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂reposit_interfaces\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜system_greet_the_world_reposit_inter.ts\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂usecases\n ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜say_hello_word_usecase.ts\n ┃ ┃ ┗ 📂shared\n ┃ ┃ ┃ ┣ 📂constants\n ┃ ┃ ┃ ┃ ┣ 📜api.const.ts\n ┃ ┃ ┃ ┃ ┣ 📜number.const.ts\n ┃ ┃ ┃ ┃ ┣ 📜string.const.ts\n ┃ ┃ ┃ ┃ ┗ 📜version.const.ts\n ┃ ┃ ┃ ┣ 📂extensions\n ┃ ┃ ┃ ┣ 📂global\n ┃ ┃ ┃ ┃ ┗ 📜string.variable.ts\n ┃ ┃ ┃ ┣ 📂logs\n ┃ ┃ ┃ ┃ ┗ 📜logger.ts\n ┃ ┃ ┃ ┣ 📂middlewares\n ┃ ┃ ┃ ┗ 📂services\n ┃ ┃ ┃ ┃ ┣ 📂images\n ┃ ┃ ┃ ┃ ┗ 📂security\n ┃ ┗ 📜index.ts\n ┣ 📂test\n ┃ ┗ 📜.gitkeep\n ┣ 📜.eslintignore\n ┣ 📜.eslintrc\n ┣ 📜.gitignore\n ┣ 📜.prettierignore\n ┣ 📜.prettierrc\n ┣ 📜babel.config.json\n ┣ 📜jest.config.json\n ┣ 📜nodemon.json\n ┣ 📜package.json\n ┣ 📜readme.md\n ┣ 📜tsconfig.json\n ┗ 📜typedoc.json\n```\n\n## Usage and Configuration\n\nAfter downloading or cloning the Git Repository\n\n  1. go to the **project** folder and copy all the content in your server's project\n   \n  2. go into your **package.json file**, fill the following points:\n   \n     - \"name\" : Specify the Project Name\n     - \"description\" : Specify the Project Description\n     - \"url\" : \"git+url\" (complete the url line with the git url of your repository)\n     - \"author\" : Specify the Project Author (Organisation name)\n  \n  3. and type ***npm install*** to install all packages of Dependencies and Dev_Dependencies \n\n---\n\u003cp style=\"text-align: center\"\u003e Copyright \u0026copy; 2024 James Brel All Rights Reserved\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesbrel%2Fnode_clean_and_modular_arch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamesbrel%2Fnode_clean_and_modular_arch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesbrel%2Fnode_clean_and_modular_arch/lists"}