\u003Cbr /> \u003Cimg width=\"502\" alt=\"Screen Shot 2022-03-25 at 2 57 18 PM\" src=\"https://user-images.githubusercontent.com/734428/160080618-1320d0f9-5674-4133-9a57-9fd7f6e77ce2.png\"> | **3m** \u003Cbr />\u003Cbr /> \u003Cimg width=\"498\" alt=\"Screen Shot 2022-03-25 at 2 54 50 PM\" src=\"https://user-images.githubusercontent.com/734428/160080718-4f3fad38-71e5-4793-a839-797a0f87b65e.png\">\r\nInstall Deps in Actions | [1m 25s](https://github.com/kodadot/nft-gallery/runs/5676422402?check_suite_focus=true#step:4:35) | [**28s**](https://github.com/kodadot/nft-gallery/runs/5687650302?check_suite_focus=true#step:6:467)\r\n\r\n\r\nimpressive time savings.\r\nCurious if you would be keen to write an article on how we've migrated from yarn to pnpm? \r\nSome people might find it interesting as we are still early! \r\nThis morning found friends deciding between npm and yarn 😅.\r\n\r\nWe are usually publishing at https://medium.com/kodadot :)\r\n\r\nIssue is reserved for @preschian \r\n\r\n_Originally posted by @yangwao in https://github.com/kodadot/nft-gallery/issues/2643#issuecomment-1078864547_\r\n\r\n### Ref \r\n- https://medium.com/pnpm/why-should-we-use-pnpm-75ca4bfe7d93#:~:text=pnpm%20is%20not%20only%20faster,them%20from%20the%20global%20store.\r\n- https://rushjs.io/pages/maintainer/package_managers/\r\n- https://blog.logrocket.com/javascript-package-managers-compared/\r\n- [What does make pnpm special?](https://twitter.com/moo9000/status/1507297097070043184)\r\n- PNPM is the only option that solves the [NPM doppelgangers](https://rushjs.io/pages/advanced/npm_doppelgangers/) problem. In a complex monorepo, doppelgangers sometimes cause a lot of trouble, so PNPM has an important advantage in this regard.\r\n- we can push KodaDot logo to https://pnpm.io/users",[2907,2910,2913],{"name":2908,"color":2909},"$$","0E8A16",{"name":2911,"color":2912},"p3","D4C5F9",{"name":2914,"color":2915},"A-writing-✍️","FBCA04",2671,"kodadot","nft-gallery","open","How we've migrated from yarn to pnpm","2023-05-18T11:23:54Z","https://github.com/kodadot/nft-gallery/issues/2671",0.75772524,{"description":2925,"labels":2926,"number":2936,"owner":2917,"repository":2918,"state":2937,"title":2938,"updated_at":2939,"url":2940,"score":2941},"We will be migrating pictures from Pinata for faster UX to Cloudflare Images/R2 or Netlify Large media\r\n\r\nIt's prior research how to do it best but I guess we already got written scrapper by @vikiival \r\n\r\nhttps://github.com/kodadot/nft-gallery/pull/1576#discussion_r774384969",[2927,2929,2931,2933],{"name":2928,"color":2915},"A-research",{"name":2930,"color":2912},"p2",{"name":2932,"color":2915},"A-nuxt",{"name":2934,"color":2935},"v2.2","6AC658",1594,"closed","Migrate pictures from Pinata to CDN","2022-02-02T11:06:52Z","https://github.com/kodadot/nft-gallery/issues/1594",0.7077926,{"description":2943,"labels":2944,"number":2945,"owner":2917,"repository":2946,"state":2937,"title":2947,"updated_at":2948,"url":2949,"score":2950},"Currently we are using Estuary.\r\nIt's good but we have to major issues:\r\n\r\n- [ ] data retrieval is slow\r\n- [ ] when estuary down we are basically fokked :)\r\n\r\n- kodadot/nft-gallery#3295\r\n\r\n",[],8,"workers","Implement pinata as the possible pinning service","2022-09-22T14:12:00Z","https://github.com/kodadot/workers/issues/8",0.7231209,{"description":2952,"labels":2953,"number":2961,"owner":2917,"repository":2918,"state":2937,"title":2962,"updated_at":2963,"url":2964,"score":2965},"Hence there were unknown changes or at least on Basilisk we've noticed that after fresh minting things are not working. \r\nThus time to revisit the initial implementation of cf workers and how we have it in the current state.\r\n\r\nCurrently, the user pins stuff on Estuary, which we've found acting suboptimal as it's being stored on Filecoin (archive nodes(?) and retrieving through pinata gateway takes a long time (peering issues?). (Something has changed outside of our control, we are investigating, it till we are looking to mitigate it and make a more resilient and antifragile scenario) \r\n\r\n### Future proposed changes are \r\n- [x] #3358 temp hotfix\r\n- [ ] Pinning metadata on Pinata (as we are blazingly fast here for end-user experience) and rest pinning could be kept on Estuary -> We are pinning rn on NFT.storage and seems temporary hotfix is okay\r\n- [ ] At minting, we should push media to CF images (might not happen during BSX mints?)\r\n- [ ] At the new implementation, we would doesn't need durable objects at all and fetch images by IPFS hash from CF images to accelerate end-user experience while they browsing collections/explorer\r\n- [x] https://github.com/kodadot/nft-gallery/issues/3745\r\n- [x] https://github.com/kodadot/nft-gallery/issues/3296\r\n\r\n### Long-term goal\r\n\r\nCurrently, we are fairly doing close to 1TB on Pinata Gateway monthly as transfers for users and this would be an interesting way to offload as public goods for storage providers, like those around the Filecoin provider's circle\r\n\r\n### Suggested would be to recycle code from\r\n- https://github.com/kodadot/nft-gallery/blob/main/src-functions/pinJson.js \r\n- https://github.com/kodadot/workers/blob/master/pinning/src/lib.rs#L84\r\n\r\nTo make it work with Pinata directly from workers to pin JSON metadata there\r\n\r\nCheck the links below for more context \r\nLet's comment below if you want to thrill on this issue \r\n\r\n### Ref\r\n- https://github.com/kodadot/packages/issues/17\r\n- https://github.com/kodadot/workers/issues/7\r\n- https://github.com/kodadot/workers/issues/8\r\n- https://github.com/kodadot/nft-gallery/issues/3253\r\n- https://github.com/kodadot/bao/issues/10",[2954,2955,2956,2958],{"name":2908,"color":2909},{"name":2930,"color":2912},{"name":2957,"color":2915},"A-basilisk",{"name":2959,"color":2960},"chief","67EA1F",3334,"Rework current pinning & storage strategy","2023-02-08T11:21:12Z","https://github.com/kodadot/nft-gallery/issues/3334",0.7274368,{"description":2967,"labels":2968,"number":2972,"owner":2917,"repository":2918,"state":2937,"title":2973,"updated_at":2974,"url":2975,"score":2976},"We've got invited in Lisbon to use Estuary https://estuary.tech/\r\n\r\nBigger files and more reliable storage with more gateways than Pinata, we've bet it should be cheaper.",[2969,2970,2971],{"name":2930,"color":2912},{"name":2932,"color":2915},{"name":2934,"color":2935},963,"Integrate Estuary and use it instead Pinata","2022-01-19T10:50:41Z","https://github.com/kodadot/nft-gallery/issues/963",0.7501773,{"description":2978,"labels":2979,"number":2988,"owner":2917,"repository":2918,"state":2937,"title":2989,"updated_at":2990,"url":2991,"score":2992},"I would like to restrict image worker to have sort of host origin allowed only from \r\n- netlify previews\r\n- beta.kodadot.xyz\r\n- kodadot.xyz\r\n- dev environment / localhost\r\n\r\n\r\nSeems someone is running our fork for example under different domain:)\r\n\r\n_Originally posted by @yangwao in https://github.com/kodadot/nft-gallery/issues/4677#issuecomment-1380588875_\r\n ",[2980,2982,2983,2985],{"name":2981,"color":2909},"$",{"name":2930,"color":2912},{"name":2984,"color":2915},"A-worker",{"name":2986,"color":2987},"cloudflare","f6821e",4678,"Restrict host origin for Image Workers","2023-01-13T14:51:06Z","https://github.com/kodadot/nft-gallery/issues/4678",0.7553042,{"description":2994,"labels":2995,"number":2998,"owner":2917,"repository":2918,"state":2937,"title":2999,"updated_at":3000,"url":3001,"score":3002},"\r\n\u003Cimg width=\"514\" alt=\"image\" src=\"https://github.com/user-attachments/assets/c6fe6a2d-b3c6-40d5-8f9f-cd1e00eacd5c\">\r\n\r\nrelated to https://github.com/kodadot/nft-gallery/pull/10702",[2996],{"name":2997,"color":2915},"A-maintenance",10983,"Fix failed test","2024-12-25T06:28:42Z","https://github.com/kodadot/nft-gallery/issues/10983",0.76527363,{"description":3004,"labels":3005,"number":3012,"owner":2917,"repository":2918,"state":2937,"title":3013,"updated_at":3014,"url":3015,"score":3016},"This is quite experimental, but we need to supercharge our UX as with more parachains we need to push our stuff on the edge servers as Pinata suffers, is quite slow and doesn't quite keep pace for files.\r\nWe are a bit failing into a centralized pit, but we will store copies of IPFS & Arweave for sure still. \r\nSo stuff is still decentralized for whatever reason you need to have it permanent and distributed, yet we need to go fast whenever users browse our interface.\r\n\r\nInitial idea is to scrape all jpegs on daily basis, once per day, \r\neven ones from Singular and push them to KodaDot Netlify account to supercharge loading times.\r\n(we can make Plural by KodaDot)\r\n\r\n### Ref\r\n- https://docs.netlify.com/large-media/overview/\r\n- Netlify Large Media is intended for files up to 100 MB in size.\r\n- Netlify can handle transformation if needed https://docs.netlify.com/large-media/usage-and-billing/ probably we will transform them to 666x666 locally, keeping aspect ratio in mind, it should be sufficient for fast loading them \r\n- transform them into webp format to save at least 30% smaller\r\n\r\n",[3006,3008,3009],{"name":3007,"color":2912},"p4",{"name":2932,"color":2915},{"name":3010,"color":3011},"experimental","B09211",1515,"Fetch all jpegs and push them into Netlify LM","2022-02-05T17:59:56Z","https://github.com/kodadot/nft-gallery/issues/1515",0.7654076,{"description":3018,"labels":3019,"number":3020,"owner":2917,"repository":2918,"state":2937,"title":3021,"updated_at":3022,"url":3023,"score":3024},"Apparently pinata doesn't carry that much load for gallery\r\n\r\n\r\nWe should pick from list other gw points for that\r\nhttps://ipfs.github.io/public-gateway-checker/",[],313,"Use cloudflare-ipfs for rest static content and pinata for video content","2021-09-21T07:43:44Z","https://github.com/kodadot/nft-gallery/issues/313",0.76932204,{"description":3026,"labels":3027,"number":3032,"owner":2917,"repository":2918,"state":2937,"title":3033,"updated_at":3034,"url":3035,"score":3036},"Make function with KV worker to make referral links and account some referall fee for people and figure out incentives scheme to spread the word about KodaDot\r\n\r\nWe can expand on this more\r\n\r\n### Incentivize goals\r\n- bring more people\r\n- more artists\r\n- more collectors\r\n\r\n### Qualification\r\n- Log In with Twitter (have a minimal amount of Twitter, 20?) ?\r\n- Have a minimal amount of $KSM on address (verify their KSM address)\r\n\r\n### Prevention\r\n- artificial audience\r\n- spammy behaviour\r\n- gaming the system\r\n\r\n### Ref\r\n- Might be part of $koda\r\n- Sign message - https://cloudflare-ipfs.com/ipns/dotapps.io/#/signing\r\n- Verify message - https://cloudflare-ipfs.com/ipns/dotapps.io/#/signing/verify",[3028,3030,3031],{"name":3029,"color":2909},"$$$",{"name":2928,"color":2915},{"name":3007,"color":2912},1722,"Serverless affiliate/referral link engine","2023-05-23T12:56:35Z","https://github.com/kodadot/nft-gallery/issues/1722",0.7722587,["Reactive",3038],{},["Set"],["ShallowReactive",3041],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fDUpfzE0t6Xb03eUq7i-zGlDybUHjIwdW_D_Kr3VCZSw":-1},"/kodadot/nft-gallery/1889"]