{"id":19068678,"url":"https://github.com/elfrank/sample-nodejs-project","last_synced_at":"2025-04-13T21:32:41.322Z","repository":{"id":38426116,"uuid":"343038439","full_name":"elfrank/sample-nodejs-project","owner":"elfrank","description":"a walking skeleton for node.js projects","archived":false,"fork":false,"pushed_at":"2023-03-05T21:41:32.000Z","size":1437,"stargazers_count":0,"open_issues_count":9,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T11:50:29.480Z","etag":null,"topics":["ci-cd","javascript","nodejs","sample-app","sample-code","sample-project","walking-skeleton"],"latest_commit_sha":null,"homepage":"https://elfrank.github.io/sample-nodejs-project/","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/elfrank.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2021-02-28T06:37:19.000Z","updated_at":"2021-04-19T02:27:01.000Z","dependencies_parsed_at":"2024-11-09T01:11:22.132Z","dependency_job_id":"e734838a-ac0e-4f5d-a25e-1b17ad3b6502","html_url":"https://github.com/elfrank/sample-nodejs-project","commit_stats":null,"previous_names":[],"tags_count":4,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elfrank%2Fsample-nodejs-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elfrank%2Fsample-nodejs-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elfrank%2Fsample-nodejs-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elfrank%2Fsample-nodejs-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elfrank","download_url":"https://codeload.github.com/elfrank/sample-nodejs-project/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248786225,"owners_count":21161419,"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":["ci-cd","javascript","nodejs","sample-app","sample-code","sample-project","walking-skeleton"],"created_at":"2024-11-09T01:11:18.634Z","updated_at":"2025-04-13T21:32:41.288Z","avatar_url":"https://github.com/elfrank.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sample-nodejs-project\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n[![Maintainability](https://api.codeclimate.com/v1/badges/302ed2e8c61f4303e378/maintainability)](https://codeclimate.com/github/elfrank/sample-nodejs-project/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/302ed2e8c61f4303e378/test_coverage)](https://codeclimate.com/github/elfrank/sample-nodejs-project/test_coverage)\n\n[**sample-nodejs-project**](https://github.com/elfrank/sample-nodejs-project) gets you started with a [walking skeleton](https://www.henricodolfing.com/2018/04/start-your-project-with-walking-skeleton.html) for your next node.js library or app.\n\nForget about the boilerplate stuff and get started on your project.\n\n## Highlights\n* **Backwards compatible Javascript** through [Babel](https://babeljs.io/). Modify `.babelrc` to update its configuration.\n* **Typescript support**. Modify `.tsconfig.json`, `tsconfig.cjs.json` and `tsconfig.esm.json` to update its configuration.\n* **Linting** through [ESlint](http://eslint.org/). Modify `.eslintrc` to update its configuration.\n* **Docs Generation** through [Typedoc](https://typedoc.org/).\n* **Unit Testing** through [Mocha](https://mochajs.org/).\n* **Unit Testing Coverage** through [Istanbul](https://github.com/istanbuljs/nyc). Modify `.nycrc.json` to update its configuration.\n* **Unit Testing Coverage reporting** through [CodeClimate](https://codeclimate.com/).\n* **Standard Commit Messages** through [commitizen](https://github.com/commitizen/cz-cli).\n* **Automated releases** through [semantinc-release](https://github.com/semantic-release/semantic-release). Modify `release.config.js` to update its configuration.\n* **Github Actions** for PR commits: linting, testing, coverage, CodeClimate code quality\n* **Github Actions** for merging PRs: automated releases (Github tagging only).\n\n## Setup\n\nInstall [nvm](https://github.com/nvm-sh/nvm) (node version manager)\n```bash\n# install and use the version specified in .nvmrc\nnvm i\n\n# install global packages\nnpm install -g commitizen\n\n# install node_modules\nnpm install\n```\n\n## Scripts\n\n```bash\n# run TypeScript compilation process\nnpm run build\n\n# build docs\nnpm run docs\n\n# run linter\nnpm run lint src/\n\n# run unit tests without coverage\nnpm run test\n\n# run unit tests with coverage\nnpm run test:coverage\n\n# run example\nnode examples/hello-world.cjs.js\n\n```\n\n## Forking\nBesides the instructions above, do the following:\n1. Delete CHANGELOG.md. It will be regenerated in your first release.\n2. Set the `version` field in `package.json` to `1.0.0`.\n3. Update attributes in `package.json`.\n4. Update the `README.md` accordingly.\n5. Generate the following secrets for your Github Actions (Repo -\u003e Settings -\u003e Secrets)\n  * `GH_TOKEN`: Create a [personal token](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token). This is needed for the automated semantic releases.\n  * `CC_TEST_REPORTER_ID`: Once you add your repo to [CodeClimate](https://codeclimate.com/), go to Repo Settings -\u003e Test Coverage. Get the `Test Reporter ID` from there. This is needed to send the test coverage to CodeClimate.\n\n## How-tos\n* Taking advantage of commitizen auto-formatting\n```bash\n# instead of git commit, use\ngit cz\n```\n\n* Testing semantic releases locally\n```bash\nGITHUB_TOKEN=your_token npx semantic-release --dry-run\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felfrank%2Fsample-nodejs-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felfrank%2Fsample-nodejs-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felfrank%2Fsample-nodejs-project/lists"}