{"id":13394068,"url":"https://github.com/d3fc/d3fc","last_synced_at":"2026-04-04T12:58:02.435Z","repository":{"id":21531336,"uuid":"24850617","full_name":"d3fc/d3fc","owner":"d3fc","description":"A collection of components that make it easy to build interactive charts with D3","archived":false,"fork":false,"pushed_at":"2024-09-28T04:14:49.000Z","size":22350,"stargazers_count":1343,"open_issues_count":174,"forks_count":197,"subscribers_count":39,"default_branch":"master","last_synced_at":"2026-04-04T12:57:42.909Z","etag":null,"topics":["chart","d3","d3fc","d3js","interactive-charts"],"latest_commit_sha":null,"homepage":"https://d3fc.io/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"invernizzi/pyzipcode","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/d3fc.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2014-10-06T15:03:11.000Z","updated_at":"2026-03-05T00:38:35.000Z","dependencies_parsed_at":"2024-04-05T16:31:20.309Z","dependency_job_id":"1c1ed151-d439-4cf7-8796-c27b14f0107e","html_url":"https://github.com/d3fc/d3fc","commit_stats":{"total_commits":1245,"total_committers":64,"mean_commits":19.453125,"dds":0.7686746987951807,"last_synced_commit":"55ee5942a0885ea073838afaaa89eba24cefab15"},"previous_names":["scottlogic/d3-financial-components","scottlogic/d3fc"],"tags_count":1113,"template":false,"template_full_name":null,"purl":"pkg:github/d3fc/d3fc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3fc%2Fd3fc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3fc%2Fd3fc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3fc%2Fd3fc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3fc%2Fd3fc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/d3fc","download_url":"https://codeload.github.com/d3fc/d3fc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3fc%2Fd3fc/sbom","scorecard":{"id":126825,"data":{"date":"2025-08-11","repo":{"name":"github.com/d3fc/d3fc","commit":"55ee5942a0885ea073838afaaa89eba24cefab15"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.1,"checks":[{"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":10,"reason":"all changesets reviewed","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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release.yml:20","Warn: no topLevel permission defined: .github/workflows/create-release-notes.yml:1","Warn: no topLevel permission defined: .github/workflows/development.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1"],"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":"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":"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":"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":"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":"Pinned-Dependencies","score":5,"reason":"dependency not pinned by hash detected -- score normalized to 5","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/create-release-notes.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/d3fc/d3fc/create-release-notes.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/create-release-notes.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/d3fc/d3fc/create-release-notes.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/development.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/d3fc/d3fc/development.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/development.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/d3fc/d3fc/development.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/development.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/d3fc/d3fc/development.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/development.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/d3fc/d3fc/development.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/d3fc/d3fc/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/d3fc/d3fc/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/d3fc/d3fc/release.yml/master?enable=pin","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   3 out of   3 npmCommand dependencies pinned"],"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":"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":"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":"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"18 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-h5c3-5r3r-rr8q","Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-8hc4-vh64-cxmj","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-36jr-mh4h-2g58","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-6vfc-qv3f-vr6c","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-pq67-2wwv-3xjx","Warn: Project is vulnerable to: GHSA-8cj5-5rvv-wf4v","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-16T04:08:50.692Z","repository_id":21531336,"created_at":"2025-08-16T04:08:50.692Z","updated_at":"2025-08-16T04:08:50.692Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31400460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"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":["chart","d3","d3fc","d3js","interactive-charts"],"created_at":"2024-07-30T17:01:07.876Z","updated_at":"2026-04-04T12:58:02.408Z","avatar_url":"https://github.com/d3fc.png","language":"HTML","funding_links":[],"categories":["HTML","Charts","others"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg alt=\"D3FC Logo\" src=\"site/logo-stroke.svg\" height=\"110px\"/\u003e\n\u003cbr/\u003e\u003cbr/\u003e\n\u003ca href=\"https://travis-ci.org/d3fc/d3fc\"\u003e\u003cimg alt=\"Build status\" src=\"https://travis-ci.org/d3fc/d3fc.svg?branch=master\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://badge.fury.io/js/d3fc\"\u003e\u003cimg alt=\"npm version\" src=\"https://badge.fury.io/js/d3fc.svg\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n**Components to rapidly build fast, highly customisable, interactive charts with D3**\n\n## Installation\n\nThe latest release of D3FC is available via npm or the unpkg CDN. The D3FC project is composed of a number of separate packages each of which can be installed via npm and used independently, or if you prefer you can install the entire D3FC bundle, which includes all of the separate packages -\n\n```\nnpm install d3fc\n```\n\n```html\n\u003cscript src=\"https://unpkg.com/d3\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://unpkg.com/d3fc\"\u003e\u003c/script\u003e\n```\n\nTest your installation using the [simple chart example](https://github.com/d3fc/d3fc/tree/master/examples/simple-chart).\n\n## Documentation\n\nThe following getting-started guides are available -\n\n-   [Building a Chart](https://github.com/d3fc/d3fc/tree/master/docs/building-a-chart.md) - a walk through building a chart with D3FC and what makes it different from other libraries.\n-   [The Decorate Pattern](https://github.com/d3fc/d3fc/tree/master/docs/decorate-pattern.md) - the pattern D3FC employs, resulting in charting components that are both simple and flexible.\n-   [Transitions](https://github.com/d3fc/d3fc/tree/master/docs/transitions.md) - how to use D3 transitions with D3FC.\n\nFor API documentation see the corresponding package documentation -\n\n-   [d3fc-annotation](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-annotation/README.md)\n-   [d3fc-axis](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-axis/README.md)\n-   [d3fc-brush](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-brush/README.md)\n-   [d3fc-chart](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-chart/README.md)\n-   [d3fc-data-join](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-data-join/README.md)\n-   [d3fc-discontinuous-scale](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-discontinuous-scale/README.md)\n-   [d3fc-element](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-element/README.md)\n-   [d3fc-extent](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-extent/README.md)\n-   [d3fc-financial-feed](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-financial-feed/README.md)\n-   [d3fc-group](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-group/README.md)\n-   [d3fc-label-layout](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-label-layout/README.md)\n-   [d3fc-pointer](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-pointer/README.md)\n-   [d3fc-random-data](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-random-data/README.md)\n-   [d3fc-rebind](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-rebind/README.md)\n-   [d3fc-sample](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-sample/README.md)\n-   [d3fc-series](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-series/README.md)\n-   [d3fc-shape](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-shape/README.md)\n-   [d3fc-technical-indicator](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-technical-indicator/README.md)\n-   [d3fc-webgl](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-webgl/README.md)\n-   [d3fc-zoom](https://github.com/d3fc/d3fc/tree/master/packages/d3fc-zoom/README.md)\n\nExamples can be found on the [project website](http://d3fc.io/). These same examples are also [available offline](https://github.com/d3fc/d3fc/tree/master/examples/README.md).\n\nFramework integration examples:\n\n-   [Streaming Chart in React](https://codepen.io/murcikan-scottlogic/pen/wvyxbjo)\n-   [Streaming Chart in Angular](https://stackblitz.com/edit/angular-ivy-bsksgk?file=src/app/app.component.html)\n-   [Streaming Chart in Svelte](https://stackblitz.com/edit/vitejs-vite-74afkj?file=src/App.svelte)\n\nThere are also a number of other documents and articles that provide a bit more background regarding the design principles of D3FC -\n\n-   [Unboxing D3](https://medium.com/@ColinEberhardt/unboxing-d3-ec3d71196852) - there are numerous charting libraries that are 'built with D3', but all of them keep D3 'in its box' and as a result, you cannot unleash its full power!\n-   [Extending D3 with Higher Order Components](https://medium.com/@ColinEberhardt/extending-d3-with-higher-order-components-d58cd40b7efd) - a brief article that walks through the process of building a chart with D3FC\n-   [Building a Complex Financial Chart with D3 and D3FC](https://blog.scottlogic.com/2018/09/21/d3-financial-chart.html) - a lengthy and detailed article that builds a complex and bespoke chart which you can [view online here](https://colineberhardt.github.io/yahoo-finance-d3fc/).\n\n## Developing\n\nThis project is a mono-repo that uses [Lerna](https://lernajs.io/) to manage dependencies between packages. To get started, run -\n\n```\nnpm ci\nnpm test\n```\n\n\u003cbr/\u003e\n\nWhen making changes to a package, you can execute the following either from within the package folder to build just that package or from the project root to build all packages -\n\n```\nnpm run bundle\n```\n\n\u003cbr/\u003e\n\nTo open a development sandbox which is automatically updated when you save changes to source files, navigate to the project root and run -\n\n```\nnpm start\n```\n\n### CI\n\nThis project is equipped with a Continuous Integration (CI) pipeline using GitHub Actions. It runs a series of checks whenever a pull request to master is opened. The pipeline includes the following steps:\n\n-   Build: Verify that the code can be successfully built.\n-   Test: Tests the application to ensure that new changes do not introduce regressions.\n-   Linting: The code is analyzed for adherence to coding standards and best practices, using [eslint](https://eslint.org/), [markdownlint](https://github.com/DavidAnson/markdownlint), and [commitlint](https://github.com/conventional-changelog/commitlint).\n\nSee [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) for a more detailed explaination.\n\nWhen opening a PR, be mindful of (and make necessary changes in accordance with) these checks.\n\n### Releases\n\nReleases are managed via CI and [Changesets](https://github.com/changesets/changesets). \n\nWhen contributing to the project, developers should add a changeset.\n\nA changeset is a Markdown file with YAML front matter. The contents of the Markdown is the change summary which will be written to the changelog and the YAML front matter describes what packages have changed and what SemVer bump types they should be\n\n```md\n---\n\"@d3fc\": major\n\"@d3fc/d3fc-annotation\": minor\n---\n\nChange all the things\n```\n\nChangesets should include: \n\n* WHAT the change is\n* WHY the change was made\n* HOW a consumer should update their code \n\n#### Adding a changeset\nTo add a changeset, before putting up a PR, contributors should: \n\n1. Run the command line script `npx changeset`\n2. Select the packages you want to include in the changeset using ↑ and ↓ to navigate to packages, and space to select a package.\n3. Hit enter when all desired packages are selected.\n4. You will be prompted to select a bump type for each selected package.\n5. Select an appropriate bump type for the changes made. See [SemVer Versioning](#semver-versioning)\n\nYour final prompt will be to provide a message to go alongside the changeset. This will be written into the changelog when the next release occurs.\n\n[Source](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md)\n\nDependabot updates should not affect the consumer, and so do not need a Changeset. These will have PATCH (`x.x.1`) version bumps.\n\n#### SemVer Versioning\nFrom [SemVer](https://semver.org/) -\n\n1. MAJOR version when you make incompatible API changes (`1.x.x`)\n2. MINOR version when you add functionality in a backward compatible manner (`x.1.x`)\n3. PATCH version when you make backward compatible bug fixes (`x.x.1`)\n\nGithub tags and releases are done using the [Tag Release on Push](https://github.com/marketplace/actions/tag-release-on-push-action) action. By default, a `minor` version bump will be added. To override this, use `release:major`, `release:minor`, or `release:patch` on PRs. Only one of these tags should be added to a PR.\n\nFrom [SemVer](https://semver.org/) -\n\n1. MAJOR version when you make incompatible API changes\n2. MINOR version when you add functionality in a backward compatible manner\n3. PATCH version when you make backward compatible bug fixes\n\n### License\n\nThese components are licensed under the [MIT License](http://opensource.org/licenses/MIT).\n\n## Sponsors\n\nProject supported by [Scott Logic](http://www.scottlogic.com).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd3fc%2Fd3fc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd3fc%2Fd3fc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd3fc%2Fd3fc/lists"}