{"id":13715117,"url":"https://github.com/cbonoz/hackfs21","last_synced_at":"2026-01-16T15:27:57.039Z","repository":{"id":71301712,"uuid":"391431562","full_name":"cbonoz/hackfs21","owner":"cbonoz","description":"CheckoutFS - Create instant checkout and product pages hosted on IPFS","archived":false,"fork":false,"pushed_at":"2021-08-15T21:51:32.000Z","size":257287,"stargazers_count":4,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-03T09:01:37.045Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cbonoz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-07-31T18:12:18.000Z","updated_at":"2023-04-27T22:07:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"72757ffa-1bd8-4355-8c7c-631ec654c46b","html_url":"https://github.com/cbonoz/hackfs21","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbonoz%2Fhackfs21","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbonoz%2Fhackfs21/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbonoz%2Fhackfs21/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbonoz%2Fhackfs21/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cbonoz","download_url":"https://codeload.github.com/cbonoz/hackfs21/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252813609,"owners_count":21808359,"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-03T00:00:54.305Z","updated_at":"2026-01-16T15:27:57.029Z","avatar_url":"https://github.com/cbonoz.png","language":"JavaScript","funding_links":[],"categories":["Awesome List"],"sub_categories":["Applications"],"readme":"\u003cp align='center'\u003e\n    \u003cimg src='./img/logo_sq.png' width=600/\u003e\n\u003c/p\u003e\n\n## CheckoutFS\n\nCreate instant checkout pages for your business or service hosted on IPFS.\n\nPrototype built for the HackFS 2021 hackathon.\n\n### Inspiration\n\nPain points:\n\n- To create a hosted product catalog, usually you'd need to pay a subscription fee hosted provider like squarespace or shopify.\n- Many of these existing providers don't integrate cryptocurrency.\n- Providers aren't distributed and suffer downsides of existing centralized platforms (vendor lock in, variable pricing, outages, credit card fees)\n\n### Features\n\n- Discover existing catalogs and menus. Use the the IPFS cid as the primary key for storefront access.\n- Upload images and descriptions for the catalog. Metadata for the catalog is delivered via a Ceramic stream.\n- Show sharable product pages hosted on IPFS.\n- Integrated pricing and checkout using Unlock protocol (other payment integrations could also be added).\n- Create a new wallet to support payments to help new businesses adopt and receive cryptocurrency payments.\n- IPFS powered storage and transaction record keeping.\n\n### Technologies used\n\n- IPFS and Protocol labs (Hosting and sharing of 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.\n- 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.\n- Unlock Protocol (purchasing): Provides cryptocurrency gateway to enable visitors/customers to purchase items from the checkout page. https://app.unlock-protocol.com/dashboard\n- 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.\n- 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.\n- 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.\n\n### How to run\n\nDefine the following env variables\n\n\u003cpre\u003e\n    REACT_APP_STORAGE_KEY = {YOUR_WEB3_STORAGE_KEY}\n\u003c/pre\u003e\n\n`yarn; yarn start`\n\nExample simple checkout page already hosted on IPFS: http://localhost:3000/pages/bafybeid67zzz5auzpc2botitsrp2lh2ybutnqkw3mej4s6dlrkthhmis5q\n\n### Aqua / Fluence\n\n(WIP)\nFor price oracle, regenerate aqua script file with `js` flag.\n\n\u003cpre\u003e\nnpm i -g @fluencelabs/aqua-cli # install aqua cli\ncd `/aqua`\naqua-cli -i aqua-scripts -o aqua-output --js\n\u003c/pre\u003e\n\nex: https://github.com/fluencelabs/examples/tree/ae3b23c99e5a23f7da99a22bf5a6877109ae7982/aqua-examples/ts-oracle\n\n\u003c!--\nDemo flow:\n1. Intro (compare with shopify)\n2. Assets (IPFS / filecoin)\n3. Upload (IPFS / filecoin)\n4. Generate CID with hosted content (IPFS / filecoin)\n5. QR Code for page.\n6. Preview page (fluence, ceramic)\n7. Show checkout modal (unlock).\n8. Music page\n9. Generate wallet to receive funds (pillar)\n--\u003e\n\n### Enhancements\n\n- 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.\n- Add support for physical address collection for physical or remote item purchase.\n- Email integration via fluence backend.\n- IPNS publishing and fully custom domains.\n- App prototype currently demoed on rinkeby, additional testing and implementation will be required for mainnet usage.\n\n## Screenshots\n\n### CheckoutFS\n\n\u003cimg src=\"./img/home.png\" width=\"800\"/\u003e\n\n### Creating a new storefront\n\n\u003cimg src=\"./img/step1.png\" width=\"800\"/\u003e\n\n### Upload complete\n\n\u003cimg src=\"./img/complete.png\" width=\"800\"/\u003e\n\n### IPNS publish to publicize storefront uploads.\n\n\u003cimg src=\"./img/ipns_generation.png\" width=\"800\"/\u003e\n\n### Creating shortcut or scannable link\n\n\u003cimg src=\"./img/qr.png\" width=\"800\"/\u003e\n\n### Basic storefront\n\n\u003cimg src=\"./img/store.png\" width=\"800\"/\u003e\n\n### Music-resell storefront\n\n\u003cimg src=\"./img/music.png\" width=\"800\"/\u003e\n\n### Verifying wallet\n\n\u003cimg src=\"./img/pillar.png\" width=\"800\"/\u003e\n\n\u003c!--\n### Other links\n* https://www.notion.so/Prizes-HackFS-d2aeebcda5694c7a9c06dc7aa2b7a2d8\n* https://www.qr-code-generator.com/qr-code-api/?target=api-ad\n\nReact\n* https://www.npmjs.com/package/react-catalog-view\n* https://www.npmjs.com/package/react-image-gallery\n\n--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcbonoz%2Fhackfs21","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcbonoz%2Fhackfs21","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcbonoz%2Fhackfs21/lists"}