Create instant checkout pages for your business or service hosted on IPFS.
- To create a hosted product catalog, usually you'd need to pay a subscription fee hosted provider like squarespace or shopify.
- Many of these existing providers don't integrate cryptocurrency.
- Providers aren't distributed and suffer downsides of existing centralized platforms (vendor lock in, variable pricing, outages, credit card fees)
How IPFS is used
- IPFS provides a distributed datastore for all the storefront images and assets.
- Each storefront URL is routed based on the IPFS cid (which represents the unique storefront id).
- The cid contains a single
info.jsonfile which contains a reference to a ceramic stream ID.
- For the storefront metadata, Ceramic is used as a mutable nosql store. This is leveraged for product information and descriptions (in the future could also include inventory).
- Integrating multiple blockchain service providers into a single application.
- web3.storage worked well for saving and retrieving documents. Mutation was one limitation, hence Ceramic was used to support this functionality.
- Some challenges remain integrating user authentication and securing API keys (ex: web3 storage key is still client side).
- Unlock protocol would need to be updated server side to work for different pricing, for the sake of the hackathon, this is set to .01 eth.
- IPFS and Protocol labs (persistence of storefront assets): IPFS and Filecoin are the primary drivers making CheckoutFS possible. Using web3.storage, a storefront or product page creator can host a distributed menu or catalog of items available for purchase with cryptocurrency.
- Pillar (payments and wallet creation for uploaders) * Enables wallet generation and onboarding for businesses that may not have crypto accounts already. Pillar exists on the wallet page and is integrated live to validate that a customer's web3 wallet is ready to accept payments. Pillar is also leveragable for the checkout process which would need further development.
- Unlock Protocol (purchasing): Provides cryptocurrency gateway to enable visitors/customers to purchase items from the checkout page. https://app.unlock-protocol.com/dashboard
- Audius: Music sharing and content listings. Audius API is integrated into the product for musicians to be able to sell rights/use to their music through catalog pages. Lookup any playlist ID and get an instant page.
- Ceramic: Used for storefront metadata storage and retrieval using streams (community node: https://developers.ceramic.network/run/nodes/community-nodes/). When a product page is accessed, a ceramic stream with the streamId of the page cid is opened and the metadata is rendered with the products from IPFS.
- Fluence: Price oracle interaction for rendering real time USD quotes on checkout pages based on latest Eth price. Fluence enables doing this without a deployed smart contract or other oracle. Custom checkout pages would also be generated via an IPNS call.
- Integrate payments and checkout flows directly from the catalog (enabling the product to be used table side). Currently this is using a fixed Unlock.js modal.
- Add support for physical address collection for physical or remote item purchase.
- Email integration via fluence backend.
- IPNS publishing and fully custom domains.
- App prototype currently demoed on rinkeby, additional testing and implementation will be required for mainnet usage.
- Add backend service for emailing.
- Enforce fulfill or delivery of non-digital assets. This project would start with digital products and expand into physical products after success with digital product delivery (music, movies, NFT's) was validated.