All Projects → web3-storage → web3.storage

web3-storage / web3.storage

Licence: other
⁂ The simple file storage service for IPFS & Filecoin

Programming Languages

javascript
184084 projects - #8 most used programming language
SCSS
7915 projects
PLpgSQL
1095 projects
typescript
32286 projects
HTML
75241 projects
shell
77523 projects

Projects that are alternatives of or similar to web3.storage

borg
Client-server stack for Web3! Turn your Raspberry Pi to a BAS server in minutes and enjoy the freedom of decentralized Web with a superior user experience!
Stars: ✭ 25 (-94%)
Mutual labels:  ipfs, libp2p, filecoin
nebula-crawler
🌌 A libp2p DHT crawler, monitor, and measurement tool that exposes timely information about DHT networks.
Stars: ✭ 97 (-76.74%)
Mutual labels:  ipfs, libp2p, filecoin
peer-id-generator
Vanity public key generator for use with IPFS and IPNS
Stars: ✭ 27 (-93.53%)
Mutual labels:  ipfs, libp2p
hydra-booster
A DHT Indexer node & Peer Router
Stars: ✭ 56 (-86.57%)
Mutual labels:  ipfs, libp2p
estuary-www
https://estuary.tech
Stars: ✭ 32 (-92.33%)
Mutual labels:  ipfs, filecoin
go-libp2p-http
HTTP on top of libp2p
Stars: ✭ 49 (-88.25%)
Mutual labels:  ipfs, libp2p
filecoin-client
Golang的轻量级filecoin客户端,支持离线签名,基本满足钱包交易所充值提现逻辑
Stars: ✭ 50 (-88.01%)
Mutual labels:  ipfs, filecoin
add-to-web3
⁂ Github Action to upload your website to web3.storage
Stars: ✭ 22 (-94.72%)
Mutual labels:  ipfs, filecoin
nft.storage
😋 Free decentralized storage and bandwidth for NFTs on IPFS and Filecoin.
Stars: ✭ 309 (-25.9%)
Mutual labels:  ipfs, filecoin
go-libp2p-quic-transport
An implementation of a libp2p transport using QUIC
Stars: ✭ 102 (-75.54%)
Mutual labels:  ipfs, libp2p
Berty
Berty is a secure peer-to-peer messaging app that works with or without internet access, cellular data or trust in the network
Stars: ✭ 5,101 (+1123.26%)
Mutual labels:  ipfs, libp2p
py-multiaddr
multiaddr implementation in Python
Stars: ✭ 27 (-93.53%)
Mutual labels:  ipfs, libp2p
go-ipfs-recovery
Data recovery for IPFS protocol.
Stars: ✭ 16 (-96.16%)
Mutual labels:  ipfs, libp2p
go-libp2p-tor-transport
🚧 WIP: tor transport for libp2p
Stars: ✭ 41 (-90.17%)
Mutual labels:  ipfs, libp2p
pop
Run a point-of-presence within Myel, the community powered content delivery network.
Stars: ✭ 28 (-93.29%)
Mutual labels:  ipfs, filecoin
filecoin-box
Filecoin flavored Ganache Truffle box
Stars: ✭ 23 (-94.48%)
Mutual labels:  ipfs, filecoin
Js Libp2p
The JavaScript Implementation of libp2p networking stack.
Stars: ✭ 1,686 (+304.32%)
Mutual labels:  ipfs, libp2p
kotal
Blockchain Kubernetes Operator
Stars: ✭ 137 (-67.15%)
Mutual labels:  ipfs, filecoin
nft-website
NFT School: Community education platform for developers in the non-fungible token space.
Stars: ✭ 260 (-37.65%)
Mutual labels:  ipfs, filecoin
Js Ipfs
IPFS implementation in JavaScript
Stars: ✭ 6,129 (+1369.78%)
Mutual labels:  ipfs, libp2p


web3.storage

The simple file storage service for IPFS & Filecoin.

Usage

Store your files with web3.storage and retrieve them via their unique Content ID. Our tools make it simple to hash your content locally, so you can verify the service only ever stores the exact bytes you asked us to. Pick the method of using with web3.storage that works for you!

Website

Create an account via https://web3.storage and upload right from the website using our uploader. Under the hood it uses the web3.storage client that we publish to npm to chunk and hash your files to calculate the root IPFS CID in your browser before sending them to https://api.web3.storage.

Once uploaded you can fetch your data from any IPFS gateway via https://dweb.link/ipfs/<root cid>

Create an api token for your account and you can use any of the following alternatives to upload your data.

JS Client

Use npm to install the web3.storage module into your JS project, create an instance of the client with your api token, and use the .put method to upload your files in node.js or the browser.

node.js

const { Web3Storage, getFilesFromPath } = require('web3.storage')
const storage = new Web3Storage({ token: process.env.WEB3_TOKEN })
const files = await getFilesFromPath(process.env.PATH_TO_ADD)
const cid = await storage.put(files)
console.log(`IPFS CID: ${cid}`)
console.log(`Gateway URL: https://dweb.link/ipfs/${cid}`)

See https://web3.storage/docs/#quickstart for a guide to using the js client for the first time.

CLI

Our command line tool w3 is a wrapper around the JS Client to make adding files from your terminal as simple as w3 put ~/gifs.

Install @web3-storage/w3 globally and save your api token then add your files to web3! It calculates the root CID for your files locally before sending them to web3.storage.

shell

$ w3 token
? Paste your API token for api.web3.storage › <your api token here>
⁂ API token saved

$ w3 put ~/Pictures/ayy-lamo.jpg
⁂ Stored 1 file
⁂ https://dweb.link/ipfs/bafybeid6gpbsqkpfrsx6b6ywrt24je4xqe4eo4y2wldisl6sk7byny5uky

Use it anywhere you can get a shell. Get creative! For example, we use this for perfomance testing the upload speed in CI!

Run w3 --help or have a look at https://github.com/web3-storage/web3.storage/tree/main/packages/w3#readme to find out everything it can do.

GitHub Action

The Action add_to_web3 wraps the w3 CLI to let you add files to web3.storage from your GitHub Workflows.

github-workflow.yaml

- run: npm run build # e.g output your static site to `./dist`

- uses: web3-storage/add-to-web3@v2
  id: web3
  with:
    web3_token: ${{ secrets.WEB3_STORAGE_TOKEN }}
    path_to_add: 'dist'

- run: echo ${{ steps.web3.outputs.cid }}
# "bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am"
- run: echo ${{ steps.web3.outputs.url }}
# "https://dweb.link/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am"

Set your api token and the path_to_add and watch it fly! We use add_to_web3 to add the web3.storage website to web3.storage from CI ∞!

cURL

Want to try it out? You can POST a file smaller than 100MB straight to https://api.web3.storage/upload with cURL.

curl -X POST --data-binary @file.txt -H 'Authorization: Bearer YOUR_API_KEY' https://api.web3.storage/upload  -s | jq
{
  "cid":"bafkreid65ervf7fmfnbhyr2uqiqipufowox4tgkrw4n5cxgeyls4mha3ma"
}

See https://web3.storage/docs/ for our complete documentation 📖🔍

Building web3.storage

Want to help us improve web3.storage? Great! This project uses node v16 and npm v7. It's a monorepo that use npm workspaces to handle resolving dependencies between the local packages/* folders.

You need an account on https://magic.link, and Docker running locally.

Copy the <.env.tpl> file to .env and set the values for the MAGIC_SECRET_KEY & NEXT_PUBLIC_MAGIC, from your magic.link account dashboard.

Install the deps with npm

# install deps
npm install

Run all the things with npm start. Double check you have Docker running first.

# start the api and website
npm start

If it's your first run you need to create the database schema.

# init the db. Run me once after `npm start`, on first set up.
npm run load-schema -w packages/db

Monorepo

This project is a monorepo that uses npm workspaces.

All npm commands should be run from the root of the repo. To run a command for a specific package add the --workspace or -w flag

# Start just the api
npm start -w packages/api

To add a new workspace (aka package) to the monorepo

# adds the path to the `website` package to the `workspaces` property in package.json
npm init -w packages/website

To run an npm script in one or more workspaces

# run test commmand in package `a` and `b`
npm run test --workspace=packages/a --workspace=packages/b

Testing

Each workspace has its own suite of testing tools, which you can learn more about in the relevant packages/* directory. Check out highlights in each readme using the links below, then dig into the relevant package.json file for a full list of available scripts.

Our docs website is currently hosted in a separate repo, but you can test it too!

Learn more

To learn more about the web3.storage service, upload a file through our friendly UI, or find detailed documentation for the JS client library, please head over to https://web3.storage

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].