nft.storage

联合创作 · 2023-09-18 19:21

nft.storage


Free decentralized storage and bandwidth for NFTs on IPFS and Filecoin.


nft.storage screenshot


Table of Contents



Client Libraries


The JS client library is the official and supported client to nft.storage. Other libraries listed have been generated from the OpenAPI schema and are experimental, unsupported and may not work at all!



  • JavaScript

  • Go (Generated from OpenAPI schema)

  • Java (Generated from OpenAPI schema)

  • PHP (Generated from OpenAPI schema)

  • Python (Generated from OpenAPI schema)

  • Ruby (Generated from OpenAPI schema)

  • Rust (Generated from OpenAPI schema)

  • Unity (C#)


HTTP API


Check out the HTTP API documentation.


Developer Tools


We've created some scripts to help developers with bulk imports, status checks, file listings and more:


https://github.com/nftstorage/nft.storage-tools


Development


Instructions for developers working on the nft.storage API and website.


Getting Started


We use yarn in this project and commit the yarn.lock file.



  1. Install dependencies.

    # install all dependencies in the mono-repo
    yarn
    # setup git hooks
    npx simple-git-hooks


  2. Follow the getting started guides in /packages/api and /packages/website.

  3. Run locally by following the instructions below.


Running Locally


To run nft.storage locally, start the following processes:



  1. Local IPFS Cluster (docker-compose up in your cluster home dir).

  2. Localtunnel to expose cluster (yarn lt in /packages/api).

  3. API server (yarn dev --env USER in /packages/api).

  4. Web server (yarn dev in /packages/website).


The site should now be available at http://localhost:4000


Release


Release Please automates CHANGELOG generation, the creation of GitHub releases, and version bumps for our packages. Release Please does so by parsing your git history, looking for Conventional Commit messages, and creating release PRs.


What's a Release PR?


Rather than continuously releasing what's landed to our default branch, release-please maintains Release PRs:


These Release PRs are kept up-to-date as additional work is merged. When we're ready to tag a release, we simply merge the release PR.


When the release PR is merged the release job is triggered to create a new tag, a new github release and run other package specific jobs. Only merge ONE release PR at a time and wait for CI to finish before merging another.


Release PRs are created individually for each package in the mono repo.


How should I write my commits?


Release Please assumes you are using Conventional Commit messages.


The most important prefixes you should have in mind are:



  • fix: which represents bug fixes, and correlates to a SemVer patch.

  • feat: which represents a new feature, and correlates to a SemVer minor.

  • feat!:, or fix!:, refactor!:, etc., which represent a breaking change (indicated by the !) and will result in a SemVer major.


Contributing


Feel free to join in. All welcome. Open an issue!


License


Dual-licensed under MIT + Apache 2.0

浏览 18
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报