CheckoutFS
Create instant checkout pages for your business or service hosted on IPFS.
Inspiration
Pain points:
- 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).
Challenges
- 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.
Technologies used
- 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.
Future work
- 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.

Log in or sign up for Devpost to join the conversation.