\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",[1984,1987,1990],{"name":1985,"color":1986},"$$","0E8A16",{"name":1988,"color":1989},"p3","D4C5F9",{"name":1991,"color":1992},"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.7713917,{"description":2002,"labels":2003,"number":2011,"owner":1994,"repository":1995,"state":2012,"title":2013,"updated_at":2014,"url":2015,"score":2016},"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",[2004,2006,2008],{"name":2005,"color":1989},"p4",{"name":2007,"color":1992},"A-nuxt",{"name":2009,"color":2010},"experimental","B09211",1515,"closed","Fetch all jpegs and push them into Netlify LM","2022-02-05T17:59:56Z","https://github.com/kodadot/nft-gallery/issues/1515",0.693987,{"description":2018,"labels":2019,"number":2026,"owner":1994,"repository":1995,"state":2012,"title":2027,"updated_at":2028,"url":2029,"score":2030},"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.",[2020,2022,2023],{"name":2021,"color":1989},"p2",{"name":2007,"color":1992},{"name":2024,"color":2025},"v2.2","6AC658",963,"Integrate Estuary and use it instead Pinata","2022-01-19T10:50:41Z","https://github.com/kodadot/nft-gallery/issues/963",0.7109388,{"description":2032,"labels":2033,"number":2041,"owner":1994,"repository":1995,"state":2012,"title":2042,"updated_at":2043,"url":2044,"score":2045},"We would need to migrate our Pinata implementation right away to join it with implementing Estuary and (wranglers) kv workers from Cloudflare\r\n\r\nIt was mitigate here once we made deploy https://github.com/kodadot/nft-gallery/pull/1853/files#diff-0545e2a376463878833d723ae342d6ce923a4fdc919623bf3cb001e7cb1dec06R6\r\n\r\nbut that's a temporary hotfix. \r\n\r\n### Ref\r\n- #963 \r\n- https://developers.cloudflare.com/pages/platform/functions",[2034,2037,2038],{"name":2035,"color":2036},"p1","D93F0B",{"name":2024,"color":2025},{"name":2039,"color":2040},"cloudflare","f6821e",1889,"Rewrite deployment of functions from Netlify to Cloudflare KV workers","2022-01-19T10:50:42Z","https://github.com/kodadot/nft-gallery/issues/1889",0.71297586,{"description":2047,"labels":2048,"number":2049,"owner":1994,"repository":1995,"state":2012,"title":2050,"updated_at":2051,"url":2052,"score":2053},"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.71475047,{"description":2055,"labels":2056,"number":2057,"owner":1994,"repository":2058,"state":2012,"title":2059,"updated_at":2060,"url":2061,"score":2062},"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.7195046,{"description":2064,"labels":2065,"number":2074,"owner":1994,"repository":1995,"state":2012,"title":2075,"updated_at":2076,"url":2077,"score":2078},"We have quite big chunks loading upfront and would be great to move to Nuxt as the App is getting bigger and loads slower.\r\n### Requirements to keep. \r\n\r\n- [Docs](https://nuxtjs.org/docs/2.x/features/rendering-modes)\r\n- [ ] deployment through Netlify - simple keep it in jam stack as possible as we don't want to hustle servers, serverless is allowed :)\r\n- [ ] would we need to migrate to vercel or can we stick with Netlify? For sake avoid switching costs at the current stage.\r\n\r\n### What we will gain?\r\n- [x] faster load times\r\n- [x] better router?",[2066,2069,2070,2073],{"name":2067,"color":2068},"enhancement","a2eeef",{"name":1988,"color":1989},{"name":2071,"color":2072},"intern","241540",{"name":2007,"color":1992},584,"Migrate KodaDot into Nuxt framework ","2021-11-09T11:57:42Z","https://github.com/kodadot/nft-gallery/issues/584",0.7489947,{"description":2080,"labels":2081,"number":2086,"owner":1994,"repository":1995,"state":2012,"title":2087,"updated_at":2088,"url":2089,"score":2090},"Right now, we are suffering terrible service & support from Pinata for $1k/mo, which gives us randomly 400,401,403,504 HTTP errors and over 48h no response; it's not suitable for us as a reliable partner, where we've made over 2TB+/4M req on monthly average (anticipation we will make much higher numbers in upcoming months) we need to look for a provider who has at least half of serving costs for us to grow our profits and cover burn.\r\n\r\nIt turns out to end users don't care where their images are served from (IPFS or Arweave), but instead, they are served well & fast.\r\n\r\nWe will keep minimal viable IPFS links to keep our web3 ethos at this level and steer ourselves to being a fat layer over better serving NFT media. \r\n\r\nWe will keep using Filecoin Storage Deal for storage, so you can still fetch media outside of KodaDot with IPFS links.\r\nFor serving, we will leverage CF images and R2 fully to achieve the most user comfort. \r\nIt's vendor lock-in we will trade-off we are making for customer satisfaction.\r\n\r\nWe will introduce CORS for our CDN in terms of whether it would be available from whitelisted domains. \r\n```\r\nkodadot.xyz\r\nbeta.kodadot.xyz\r\ndeploy-preview-WXYZ--koda-nuxt.netlify.app\r\n```\r\n\r\n## Ref\r\n- https://github.com/kodadot/workers/issues/7\r\n- https://github.com/kodadot/nft-gallery/issues/3334\r\n- https://github.com/kodadot/nft-gallery/issues/3745\r\n- https://github.com/kodadot/nft-gallery/issues/3296\r\n- https://github.com/kodadot/nft-gallery/issues/4551\r\n- https://github.com/kodadot/nft-gallery/issues/4574\r\n- https://github.com/kodadot/nft-gallery/issues/4583\r\n- https://github.com/kodadot/nft-gallery/issues/4586\r\n- https://github.com/kodadot/nft-gallery/issues/4169\r\n- https://github.com/kodadot/nft-gallery/issues/4199\r\n- https://developers.cloudflare.com/images/cloudflare-images/make-an-image-private/\r\n- https://developers.cloudflare.com/images/cloudflare-images/\r\n- https://developers.cloudflare.com/images/cloudflare-images/serve-images/serve-private-images-using-signed-url-tokens/",[2082,2083],{"name":2035,"color":2036},{"name":2084,"color":2085},"chief","67EA1F",4587,"Reworking media serving for edge caching, speed and costs","2023-01-04T15:13:06Z","https://github.com/kodadot/nft-gallery/issues/4587",0.750354,{"description":2092,"labels":2093,"number":2099,"owner":1994,"repository":1995,"state":2012,"title":2100,"updated_at":2101,"url":2102,"score":2103},"Seems we've reached pinata total requests (80%) plan and looking forward to a particular economical replacement. If we opt out, go from Pinata.\r\n\r\nRight now, we've switched from pinning at Pinata to nft.storage which is good tho\r\nThere is nftstorage.link for \r\n\r\n- [x] Reached out https://nftstorage.link/\r\n\r\n\r\n",[2094,2095,2096],{"name":2067,"color":2068},{"name":2035,"color":2036},{"name":2097,"color":2098},"gateway","340294",3745,"Explore other fast IPFS gateways","2023-01-05T08:47:52Z","https://github.com/kodadot/nft-gallery/issues/3745",0.75101286,{"description":2105,"labels":2106,"number":2112,"owner":1994,"repository":1995,"state":2012,"title":2113,"updated_at":2114,"url":2115,"score":2116},"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",[2107,2108,2109,2111],{"name":1985,"color":1986},{"name":2021,"color":1989},{"name":2110,"color":1992},"A-basilisk",{"name":2084,"color":2085},3334,"Rework current pinning & storage strategy","2023-02-08T11:21:12Z","https://github.com/kodadot/nft-gallery/issues/3334",0.7512848,["Reactive",2118],{},["Set"],["ShallowReactive",2121],{"TRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"lYfZTSwKnXpUU9_mzw2qNgam0lX8ktiK6tkQZaaV57E":-1},"/kodadot/nft-gallery/1594"]