{"id":14384369,"url":"https://github.com/ipfs-examples/js-ipfs-examples","last_synced_at":"2025-08-23T17:31:55.745Z","repository":{"id":37092072,"uuid":"384128099","full_name":"ipfs-examples/js-ipfs-examples","owner":"ipfs-examples","description":"Collection of js-ipfs examples","archived":true,"fork":false,"pushed_at":"2023-03-06T12:43:52.000Z","size":13316,"stargazers_count":248,"open_issues_count":88,"forks_count":156,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-12-16T07:07:17.298Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ipfs-examples.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-07-08T13:09:09.000Z","updated_at":"2024-10-23T09:23:05.000Z","dependencies_parsed_at":"2024-06-21T07:26:19.232Z","dependency_job_id":null,"html_url":"https://github.com/ipfs-examples/js-ipfs-examples","commit_stats":{"total_commits":428,"total_committers":83,"mean_commits":5.156626506024097,"dds":0.6495327102803738,"last_synced_commit":"8ff05484398ad240e6829120dbce22aabf885ace"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs-examples%2Fjs-ipfs-examples","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs-examples%2Fjs-ipfs-examples/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs-examples%2Fjs-ipfs-examples/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs-examples%2Fjs-ipfs-examples/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipfs-examples","download_url":"https://codeload.github.com/ipfs-examples/js-ipfs-examples/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230716490,"owners_count":18269773,"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-08-28T18:01:20.308Z","updated_at":"2024-12-21T12:30:31.777Z","avatar_url":"https://github.com/ipfs-examples.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://js.ipfs.io\" title=\"JS IPFS\"\u003e\n    \u003cimg src=\"https://ipfs.io/ipfs/Qme6KJdKcp85TYbLxuLV7oQzMiLremD7HMoXLZEmgo6Rnh/js-ipfs-sticker.png\" alt=\"IPFS in JavaScript logo\" width=\"244\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003e\u003cb\u003eJS IPFS Examples\u003c/b\u003e\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003e\u003ci\u003eCollection of js-ipfs examples\u003c/i\u003e\u003c/b\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/jlord/forkngo/gh-pages/badges/cobalt.png\" width=\"200\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://github.com/ipfs/js-ipfs/tree/master/docs\"\u003eExplore the docs\u003c/a\u003e\n  ·\n  \u003ca href=\"https://github.com/ipfs-examples/js-ipfs-examples/issues\"\u003eReport Bug\u003c/a\u003e\n  ·\n  \u003ca href=\"https://github.com/ipfs-examples/js-ipfs-examples/issues\"\u003eRequest Feature/Example\u003c/a\u003e\n\u003c/p\u003e\n\n## Table of Contents\n\n- [Table of Contents](#table-of-contents)\n- [About The Project](#about-the-project)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n- [Structure](#structure)\n- [IPFS Tutorials at ProtoSchool](#ipfs-tutorials-at-protoschool)\n- [Documentation](#documentation)\n- [ipfs or ipfs-core?](#ipfs-or-ipfs-core)\n- [Contributing](#contributing)\n  - [Guidelines](#guidelines)\n  - [Steps to follow after adding a new example](#steps-to-follow-after-adding-a-new-example)\n    - [Create a repo](#create-a-repo)\n    - [Update `js-ipfs` to run tests against the repo](#update-js-ipfs-to-run-tests-against-the-repo)\n- [Want to hack on IPFS?](#want-to-hack-on-ipfs)\n\n## About The Project\n\n- Read the [docs](https://github.com/ipfs/js-ipfs/tree/master/docs)\n- Look into other [examples](https://github.com/ipfs-examples/js-ipfs-examples) to learn how to spawn an IPFS node in Node.js and in the Browser\n- Consult the [Core API docs](https://github.com/ipfs/js-ipfs/tree/master/docs/core-api) to see what you can do with an IPFS node\n- Visit https://dweb-primer.ipfs.io to learn about IPFS and the concepts that underpin it\n- Head over to https://proto.school to take interactive tutorials that cover core IPFS APIs\n- Check out https://docs.ipfs.io for tips, how-tos and more\n- See https://blog.ipfs.io for news and more\n- Need help? Please ask 'How do I?' questions on https://discuss.ipfs.io\n\n## Getting Started\n\n### Prerequisites\n\nMake sure you have installed all of the following prerequisites on your development machine:\n\n- Git - [Download \u0026 Install Git](https://git-scm.com/downloads). OSX and Linux machines typically have this already installed.\n- Node.js - [Download \u0026 Install Node.js](https://nodejs.org/en/download/) and the npm package manager.\n\n### Installation\n\n1. Install yarn globally (needed to resolve dependencies correctly when working in a monorepo)\n   ```sh\n   npm install -g yarn\n   ```\n2. Install NPM packages\n   ```sh\n   yarn install\n   ```\n3. Run all the examples\n   ```sh\n   yarn run test\n   ```\n\n## Structure\n\nThis project is broken into 2 modules, their purposes are:\n\n- [`/examples/*`](./examples) Examples of IPFS implementations with bundlers, frameworks, tutorials among others\n- [`/lib/test-util-ipfs-example`](./lib/test-util-ipfs-example) Collection of helpers to orchestrate the tests for the examples\n\n## IPFS Tutorials at ProtoSchool\n\nExplore [ProtoSchool's IPFS tutorials](https://proto.school/#/tutorials?course=ipfs) for interactive js-ipfs coding challenges, deep dives into DWeb concepts like content addressing, and more.\n\n## Documentation\n\n- [Config](https://docs.ipfs.io/)\n- [Core API](https://github.com/ipfs/js-ipfs/tree/master/docs/core-api)\n- [Examples](https://github.com/ipfs-examples/js-ipfs-examples)\n- [Development](https://github.com/ipfs/js-ipfs/blob/master/docs/DEVELOPMENT.md)\n- [Tutorials](https://proto.school)\n\n## ipfs or ipfs-core?\n\nThe JavaScript implementation of IPFS is available as two packages, `ipfs-core` and `ipfs`.\n\n`ipfs-core` contains the [core api](https://github.com/ipfs/js-ipfs/tree/master/docs/core-api) and is intended to be used to run an IPFS node as part of your application without the need to start external processes or manage API ports and servers.\n\n`ipfs` is built on `ipfs-core` but also includes the CLI, an HTTP RPC API server and other tools to run `ipfs` as a background process so is a larger install with more dependencies.\n\nIf you are writing an application that needs to access the IPFS network, use `ipfs-core`.  If you wish to use js-IPFS in a terminal window or run it as a server for use by multiple otherwise unrelated processes, use `ipfs`.\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\n1. Fork the IPFS Examples Project (`https://github.com/ipfs-examples/js-ipfs-examples`)\n2. Create your Feature Branch (`git checkout -b feature/amazing-feature`)\n3. Commit your Changes (`git commit -a -m 'feat: add some amazing feature'`)\n4. Push to the Branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Guidelines\n\n- Follow the [example-template](https://github.com/ipfs-examples/example-template)\n  - This repository serves as template to create new examples to guarantee consistency between examples. It contains all the necessary files to create a new example\n\n- Follow the [example-template-fork-\u0026-go](https://github.com/ipfs-examples/example-fork-go-template)\n  - This repository serves as template to be used as a reference of how to implement the CI in order to sync the example with a standalone repo (correspondent to each example)\n\n- Examples must:\n  - Live inside the `/examples/` folder\n  - Have tests and should make use of `test-util-ipfs-example` library\n    - If possible use `playwright` as test framework\n  - Implement the following scripts:\n    - `clean`: used to clean all the unnecessary code (e.g.: files generated by bundlers and package managers)\n    - `build`: used to build the example\n    - `start`: used to start the example\n    - `test`: used to test the example\n\n- README must have (see example inside `example-template`):\n  - Link to `Codesandbox.com` for one-click running demonstration\n  - References for documentation/tutorials used to build the example\n  - _Optional:_ Screenshots, gifs, etc... under `img/` folder\n\n- Update the CI to run the tests of the new example as standalone\n  - Edit `github/workflows/ci.yml`\n  - Add the test name to `project` under `matrix`\n\n- Extend the `test-util-ipfs-example` library if needed to reuse code in other examples\n\n### Steps to follow after adding a new example\n\n#### Create a repo\n\n- Create a new repository based on (https://github.com/ipfs-examples/example-fork-go-template) following the name: `js-ipfs-{EXAMPLE_NAME}` with a description\n\n- Turn off issue/wikis/projects/discussions\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./img/repo_details.png\" width=\"300\" alt=\"Repo Details\"\u003e\n\u003c/p\u003e\n\n- Disable Releases/Environments/Packages\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./img/repo_settings.png\" width=\"500\" alt=\"Repo Settings\"\u003e\n\u003c/p\u003e\n\n- Follow the instruction inside the README\n\n#### Update `js-ipfs` to run tests against the repo\n\nOpen a PR to the [ipfs/js-ipfs](https://github.com/ipfs/js-ipfs) project that edits the `.github/workflows/test.yml` in order to make sure a js-ipfs release does not break your new example.\n\nSearch `.github/workflows/test.yml` for the `test-examples` section and add a block at the end of the `example` matrix key similar to:\n\n```yml\n- name: my super fun new example\n  repo: https://github.com/ipfs-examples/js-ipfs-my-super-fun-new-example.git\n  deps: ipfs-core@$PWD/packages/ipfs-core/dist,ipfs-http-client@$PWD/packages/ipfs-http-client/dist\n```\n\nThe value of the `deps` key will vary depending on which modules from js-ipfs your example uses. Above we override the `ipfs-core` and `ipfs-http-client` modules, but your example may different deps.\n\nPlease see the existing setup in `.github/workflows/test.yml` for how to ensure you are overriding the correct modules.\n\n## Want to hack on IPFS?\n\n[![](https://cdn.rawgit.com/jbenet/contribute-ipfs-gif/master/img/contribute.gif)](https://github.com/ipfs/community/blob/master/CONTRIBUTING.md)\n\nThe IPFS implementation in JavaScript needs your help! There are a few things you can do right now to help out:\n\nRead the [Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md) and [JavaScript Contributing Guidelines](https://github.com/ipfs/community/blob/master/CONTRIBUTING_JS.md).\n\n- **Check out existing issues** The [issue list](https://github.com/ipfs/js-ipfs/issues) has many that are marked as ['help wanted'](https://github.com/ipfs/js-ipfs/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22help+wanted%22) or ['difficulty:easy'](https://github.com/ipfs/js-ipfs/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Adifficulty%3Aeasy) which make great starting points for development, many of which can be tackled with no prior IPFS knowledge\n- **Look at the [IPFS Roadmap](https://github.com/ipfs/roadmap)** This are the high priority items being worked on right now\n- **Perform code reviews** More eyes will help\n  a. speed the project along\n  b. ensure quality, and\n  c. reduce possible future bugs.\n- **Add tests**. There can never be enough tests.\n- **Join the [Weekly Core Implementations Call](https://github.com/ipfs/team-mgmt/issues/992)** it's where everyone discusses what's going on with IPFS and what's next\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipfs-examples%2Fjs-ipfs-examples","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fipfs-examples%2Fjs-ipfs-examples","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipfs-examples%2Fjs-ipfs-examples/lists"}