{"id":18867890,"url":"https://github.com/izmjs/izmjs","last_synced_at":"2025-04-14T14:31:39.897Z","repository":{"id":36075606,"uuid":"202616304","full_name":"izmjs/izmjs","owner":"izmjs","description":"Highly maintainable \u0026 modular NodeJS project architecture.","archived":false,"fork":false,"pushed_at":"2023-01-23T23:54:52.000Z","size":5482,"stargazers_count":93,"open_issues_count":27,"forks_count":8,"subscribers_count":7,"default_branch":"develop","last_synced_at":"2025-03-28T03:51:11.437Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://izmjs.netlify.app/","language":"JavaScript","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/izmjs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-15T21:53:19.000Z","updated_at":"2024-12-18T06:31:52.000Z","dependencies_parsed_at":"2023-02-13T05:05:12.232Z","dependency_job_id":null,"html_url":"https://github.com/izmjs/izmjs","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izmjs%2Fizmjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izmjs%2Fizmjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izmjs%2Fizmjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izmjs%2Fizmjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/izmjs","download_url":"https://codeload.github.com/izmjs/izmjs/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248897193,"owners_count":21179554,"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":[],"created_at":"2024-11-08T05:11:46.869Z","updated_at":"2025-04-14T14:31:39.143Z","avatar_url":"https://github.com/izmjs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## NodeJS, Express and MongoDB starter\n\n[![Open in Visual Studio Code](https://open.vscode.dev/badges/open-in-vscode.svg)](https://open.vscode.dev/izmjs/izmjs)\n![David](https://img.shields.io/david/izmjs/izmjs)\n![David](https://img.shields.io/david/dev/izmjs/izmjs)\n![node](https://img.shields.io/node/v/izm)\n![npm](https://img.shields.io/npm/dm/izm)\n![npm](https://img.shields.io/npm/v/izm)\n![GitHub issues](https://img.shields.io/github/issues/izmjs/izmjs)\n![GitHub top language](https://img.shields.io/github/languages/top/izmjs/izmjs)\n![GitHub contributors](https://img.shields.io/github/contributors/izmjs/izmjs)\n[![npm version][npm-badge]][npm]\n[![vulnerabilities][vulnerabilities-badge]][vulnerabilities]\n[![PRs Welcome][prs-badge]][prs]\n[![MIT License][license-badge]][license]\n\n[![Introduction video](https://img.youtube.com/vi/BlMCotURwAk/0.jpg)](https://www.youtube.com/watch?v=BlMCotURwAk)\n\n## Table of Content\n\n- [Getting Started](#getting-started)\n- [Useful Commands](#useful-commands)\n- [VSCode helpers](#vscode-helpers)\n- [Misc](#misc)\n\n## Getting started\n\n### Using `izm` CLI\n\n```bash\nnpx izm\n# Then follow the wizard\n```\n\n### Manual clone\n\n```bash\ngit clone git@github.com:izmjs/izmjs.git new-project\ncd new-project\nnpm i\necho \"NODE_ENV=development\" \u003e .env/.common.env\ncp .example.env .env/.development.env\n```\n\nOptional: Add `devtools` functional module:\n\n```bash\ngit clone git@github.com:izmjs/devtools.git modules/devtools\nnpm i\n```\n\nStart the project\n\n```bash\nnpm start\n```\n\n## Useful Commands\n\n- `npm start` - starts a dev server with [nodemon](https://github.com/remy/nodemon)\n- `npm test` - runs tests with `mocha`\n- `npm run generate:module [name]` - generate a new module (Optionnally you can give the name in the command line, otherwise you will be prompted to choose a name.)\n\n## VSCode helpers\n\n### iam\n\nThis shortcut will put a definition of new IAM rules in the file.\n\n### iam:route\n\nWill generate a new route\n\n### iam:method\n\nWill generate the definition of a method.\n\n### ctrl\n\nCreate new controller.\n\n### module:model\n\nGenerate a new mongoose model.\n\n## Misc\n\nTo skip loading a module, specify it in the env variable `SKIP_MODULES`\n\n_Example_\n\n```\nSKIP_MODULES=modules/devtools,modules/data-browser\n```\n\n## Defining custom views\n\nIn order to define new paths of a specific template, use the file `config/lib/views.js(on)`.\n\n_Example_\n\n```json\n(module.exports = {\n  \"vendor/core/views/404\": \"views/{{req.i18n.language}}/404\"\n})\n```\n\nIn the examples above, we are redefining how to render `404` pages depending on the language of the current user. Meaning, if the language is `en` for example, the server will look for a file named `views/en/404.server.view.swig`. If not found, the server will render the default file: `vendor/core/views/404`.\n\n_Tip_: Use `req.rndr` to render a template without sending a response to the client.\n\n## Auto depmloyment (Gitlab CI)\n\nYou need to define these environment variables in your repository:\n\n- `PRODUCTION_URL`: [The production URL](https://docs.gitlab.com/ee/ci/environments.html#making-use-of-the-environment-url)\n- `PRODUCTION_DEPLOY_SERVER`: List of production servers addresses or IP addresses. Should be separated by `,`.\n- `PRODUCTION_DEPLOY_PATH`: Where to deploy project on production hosts.\n- `PRODUCTION_SSH_PRIVATE_KEY`: The SSH key to use to connect to production servers.\n- `STAGING_URL`: [The staging URL](https://docs.gitlab.com/ee/ci/environments.html#making-use-of-the-environment-url)\n- `STAGING_DEPLOY_SERVER`: List of staging servers addresses or IP addresses. Should be separated by `,`.\n- `STAGING_DEPLOY_PATH`: Where to deploy project on staging hosts.\n- `STAGING_SSH_PRIVATE_KEY`: The SSH key to use to connect to staging servers.\n\n## License\n\nMIT © Mohamed IDRISSI\n\n[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg\n[prs]: http://makeapullrequest.com\n[npm-badge]: https://badge.fury.io/js/func-loc.svg\n[npm]: https://www.npmjs.com/package/func-loc\n[vulnerabilities-badge]: https://snyk.io/test/github/midrissi/func-loc/badge.svg?targetFile=package.json\n[vulnerabilities]: https://snyk.io/test/github/midrissi/func-loc?targetFile=package.json\n[license-badge]: https://img.shields.io/badge/license-MIT-blue.svg\n[license]: https://github.com/midrissi/func-loc/blob/master/LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fizmjs%2Fizmjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fizmjs%2Fizmjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fizmjs%2Fizmjs/lists"}