{"id":15787283,"url":"https://github.com/fchauvel/rpp","last_synced_at":"2026-02-08T17:31:45.525Z","repository":{"id":36574473,"uuid":"228605289","full_name":"fchauvel/rpp","owner":"fchauvel","description":"Rapid Project Plans","archived":false,"fork":false,"pushed_at":"2023-01-05T03:14:16.000Z","size":1673,"stargazers_count":1,"open_issues_count":15,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-26T20:58:24.604Z","etag":null,"topics":["cli","gantt-chart","lightweight","project-management"],"latest_commit_sha":null,"homepage":null,"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/fchauvel.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}},"created_at":"2019-12-17T11:50:07.000Z","updated_at":"2023-02-15T23:08:45.000Z","dependencies_parsed_at":"2023-01-17T02:45:38.029Z","dependency_job_id":null,"html_url":"https://github.com/fchauvel/rpp","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/fchauvel/rpp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fchauvel%2Frpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fchauvel%2Frpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fchauvel%2Frpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fchauvel%2Frpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fchauvel","download_url":"https://codeload.github.com/fchauvel/rpp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fchauvel%2Frpp/sbom","scorecard":{"id":394509,"data":{"date":"2025-08-11","repo":{"name":"github.com/fchauvel/rpp","commit":"f525841ae009a1fe59c32e26955d04e7ae3325d4"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.2,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/6 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"48 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-6chw-6frg-f759","Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-w8qv-6jwh-64r5","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-36jr-mh4h-2g58","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-ww39-953v-wcq6","Warn: Project is vulnerable to: GHSA-765h-qjxv-5f44","Warn: Project is vulnerable to: GHSA-f2jv-r9rf-7988","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-6c8f-qphg-qjgp","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-5fw9-fq32-wv5p","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-r628-mhmh-qjhw","Warn: Project is vulnerable to: GHSA-9r2w-394v-53qc","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-qq89-hq3f-393p","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-jgrx-mgxx-jf9v","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-w5p7-h5w8-2hfq","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-6fc8-4gx4-v693","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T18:38:57.448Z","repository_id":36574473,"created_at":"2025-08-18T18:38:57.449Z","updated_at":"2025-08-18T18:38:57.449Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29238285,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T14:18:14.570Z","status":"ssl_error","status_checked_at":"2026-02-08T14:18:14.071Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cli","gantt-chart","lightweight","project-management"],"created_at":"2024-10-04T21:07:11.958Z","updated_at":"2026-02-08T17:31:45.502Z","avatar_url":"https://github.com/fchauvel.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RPP — Rapid Project Plan\n\n[![NPM Version](https://img.shields.io/npm/v/@fchauvel/rpp)](https://www.npmjs.com/package/@fchauvel/rpp)\n[![NPM Monthly download rate](https://img.shields.io/npm/dm/@fchauvel/rpp)](https://www.npmjs.com/package/@fchauvel/rpp)\n[![Build Status](https://travis-ci.org/fchauvel/rpp.svg?branch=master)](https://travis-ci.org/fchauvel/rpp)\n[![Test Coverage](https://img.shields.io/codecov/c/github/fchauvel/rpp)](https://codecov.io/gh/fchauvel/rpp/)\n[![Code Grade](https://img.shields.io/codacy/grade/bd70b010385c4f18a31d24dd44de4580.svg)](https://app.codacy.com/manual/fchauvel/rpp/dashboard)\n\nRPP is a CLI tool to quickly generate project plans including Gantt\ncharts. Project planning for developers in a way. We review its key\nfeatures, but checkout [the documentation][docs] for more details.\n\n## Requirements\nRPP is a [NodeJS](https://nodejs.org/en/) application and you must\nhave NodeJS up and running on your machine. RPP is tested on Node 10,\nso later versions should work.\n\n## Installation\n\n```shell-session\n$ npm install --global @fchauvel/rpp\n```\n\n## Gantt Charts\n\nTo export the associated Gantt chart, use:\n\n```shell-session\n$ cd docs/samples/epic\n$ rpp gantt -p workplan.yaml -o gantt.svg\n```\n\nThis yields the following Gantt chart:\n\n![Sample Gantt Chart](https://raw.github.com/fchauvel/rpp/master/docs/samples/epic/gantt.svg?sanitize=true)\n\n## Project Descriptions\n\n### Work Plan\n\nRPP consumes a description of the project split into multiple files\n(YAML or JSON), one for the workplan, one for the teams, etc. See for\ninstance `docs/samples/epic/workplan.yaml`. This file specifies the\nwork plan (work packages, tasks, deliverables and milestones) of our\nsample EPIC project (see the [workplan schema][workplan-schema]). Here\nis an excerpt:\n\n```yaml\nproject:\n  name: EPIC\n  breakdown:\n    - name: Project Management\n      breakdown:\n        - name: Infrastructure for Communication\n          start: 1\n          duration: 48\n          deliverables:\n            - name: Infrastructure for Communication\n              kind: Software\n              due: 3\n        - name: Financial Reporting\n          start: 1\n          duration: 48\n          deliverables:\n            - name: Intermediate Financial Report\n              kind: Report\n              due: 24\n            - name: Final Financial Report\n              kind: Report\n              due: 48\n```\n\n### Project Team\n\nRPP also accepts a description of the team, that this, the persons\nassigned to the project together with their roles (see the [team\nschema][team-schema]). Here is an excerpt of the EPIC team\ndescription.\n\n```yaml\nteam:\n  name: EPIC\n  members:\n  - name: SINTEF\n    members:\n      - firstname: Franck\n        lastname: Chauvel\n        leads: [ WP1, T1.1, T1.2, T3.1, T4.4 ]\n      - firstname: Brice\n        lastname: Morin\n        leads: [ WP3, T2.1, T3.3 ]\n      - firstname: Ketil\n        lastname: Stølen\n        leads: [ T1.3 ]\n  - name: UiO\n    members:\n      - firstname: Olaf\n        lastname: Owe\n        leads: [ WP4, T2.2, T4.1, T4.2, T4.3, T5.2]\n```\n\nYou can pass the team to the `rpp gantt` command using `--team|-t`\noption, so that the Gantt chart indicates who's leading each task. For\ninstance:\n\n```console\n$ cd docs/samples/epic\n$ rpp gantt -p workplan.yaml -t team.yaml -o gantt.svg\n```\n\n## Sanity Checks\n\nRPP can also run sanity checks on your project description to help\nspot inconsistencies. To do so, use the following command:\n\n```console\n$ cd docs/samples/erroenous\n$ rpp verify -p workplan.yaml\n  1. Warning: 'EMPTY WORK PACKAGE' on 'WP 2'\n     - Work package 'First Package' is empty.\n     - Tip: Have we forgotten some tasks or work packages there?\n\n  2. Warning: 'NO DELIVERABLE' on 'T 1'\n     - Task 'First Tasks' has no deliverable\n     - Tip: Do we miss some?\n\n  3. Error: 'LATE MILESTONE' on 'MS 1'\n     - Milestone 'First milestone' comes after project end.\n     - Tip: Check the milestone date\n\n2 warning(s), 1 error(s).\n```\n\nHere as well the `-t|--team` option allows us to include the team\ndescription.\n\nRPP checks for the following:\n\n-   Work plan consistency\n\n    -   Empty work package, that is, work packages that do not contain\n        any tasks or work packages.\n\n    -   Single activity work packages, that is, work packages that\n        contain a single task or work package.\n\n    -   Discontinuity in work packages, that is, activities in work\n        packages that are neither overlapping nor contiguous in\n        time. In other words, RPP search for work packages that are\n        idle at some point.\n\n    -   Tasks without any deliberable.\n\n    -   Deliverable due outside the task period.\n\n    -   Milestones set outside the project period.\n\n-   Teams consistency\n\n    -   Empty teams\n    -   Duplicate activity leader\n    -   Tasks without contributors\n    -   Activities without leader\n    -   Idle partners (without any role)\n\n[docs]: https://fchauvel.github.io/rpp/index.html\n\n[workplan-schema]: https://github.com/fchauvel/rpp/blob/058f1722d116955bb9a018dcca6287a926044670/src/storage/adapters/schemas.ts#L29\n\n[team-schema]: https://github.com/fchauvel/rpp/blob/058f1722d116955bb9a018dcca6287a926044670/src/storage/adapters/schemas.ts#L111\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffchauvel%2Frpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffchauvel%2Frpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffchauvel%2Frpp/lists"}