Stay ahead in web development: latest news, tools, and insights #32
Tags: webdev, weeklyfoo, javascript, node
Published: 2024-05-13 05:15:52


weeklyfoo #32 is here: your weekly digest of all webdev news you need to know! This time you'll find 40 valuable links in 6 categories! Enjoy!
## 🚀 Read it!

- <a href="https://zed.dev/blog/text-manipulation?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vemVkLmRldi9ibG9nL3RleHQtbWFuaXB1bGF0aW9uIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6InJlYWRJdCIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">Text Manipulation Kung Fu for the Aspiring Black Belt</a>: Everyone needs that belt!<small> / </small><small>*text*</small><small> / </small><small>12 min read</small>
- <a href="https://eu-acc.com/?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZXUtYWNjLmNvbS8iLCJwcm9qZWN0Ijoid2Vla2x5Zm9vIiwiaW5kZXgiOjMyLCJzZWN0aW9uIjoicmVhZEl0Iiwic291cmNlIjoid2ViIn19">eu/acc</a>: European Accelerationism. Europ, please wake up.<small> / </small><small>*startups*</small><small> / </small><small>7 min read</small>


<Hr />

## 📰 Good to know

- <a href="https://flaremingo.com/blog/cloudflare-vs-vercel-in-depth-comparison/?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZmxhcmVtaW5nby5jb20vYmxvZy9jbG91ZGZsYXJlLXZzLXZlcmNlbC1pbi1kZXB0aC1jb21wYXJpc29uLyIsInByb2plY3QiOiJ3ZWVrbHlmb28iLCJpbmRleCI6MzIsInNlY3Rpb24iOiJnb29kVG9Lbm93Iiwic291cmNlIjoid2ViIn19">Why Cloudflare is the Best Alternative to Vercel in 2024</a>: This article explores Vercel features, comparing to similar products from the Cloudflare Ecosystem.<small> / </small><small>*cloudflare*, *vercel*</small><small> / </small><small>26 min read</small>
- <a href="https://github.com/honojs/hono/releases/tag/v4.3.0?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9ob25vanMvaG9uby9yZWxlYXNlcy90YWcvdjQuMy4wIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6Imdvb2RUb0tub3ciLCJzb3VyY2UiOiJ3ZWIifX0%3D">Hono v4.3.0</a>: Next minor release of Hono<small> / </small><small>*hono*</small><small> / </small><small>9 min read</small>
- <a href="https://www.thecaringtechie.com/p/3-critical-skills-you-need-to-grow?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vd3d3LnRoZWNhcmluZ3RlY2hpZS5jb20vcC8zLWNyaXRpY2FsLXNraWxscy15b3UtbmVlZC10by1ncm93IiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6Imdvb2RUb0tub3ciLCJzb3VyY2UiOiJ3ZWIifX0%3D">3 Critical Skills You Need to Grow Beyond Senior Levels in Engineering</a>: Applicable to both technical and managerial tracks<small> / </small><small>*career*</small><small> / </small><small>7 min read</small>
- <a href="https://pavel-romanov.com/5-node-version-managers-compared-which-is-right-for-you?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vcGF2ZWwtcm9tYW5vdi5jb20vNS1ub2RlLXZlcnNpb24tbWFuYWdlcnMtY29tcGFyZWQtd2hpY2gtaXMtcmlnaHQtZm9yLXlvdSIsInByb2plY3QiOiJ3ZWVrbHlmb28iLCJpbmRleCI6MzIsInNlY3Rpb24iOiJnb29kVG9Lbm93Iiwic291cmNlIjoid2ViIn19">5 Node Version Managers Compared – Which is Right for You?</a>: Didn't know you can use pnpm to manage node versions<small> / </small><small>*nodejs*</small><small> / </small><small>9 min read</small>
- <a href="https://joshtronic.com/2024/05/05/vps-showdown-april-2024-digitalocean-linode-vultr/?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vam9zaHRyb25pYy5jb20vMjAyNC8wNS8wNS92cHMtc2hvd2Rvd24tYXByaWwtMjAyNC1kaWdpdGFsb2NlYW4tbGlub2RlLXZ1bHRyLyIsInByb2plY3QiOiJ3ZWVrbHlmb28iLCJpbmRleCI6MzIsInNlY3Rpb24iOiJnb29kVG9Lbm93Iiwic291cmNlIjoid2ViIn19">VPS Showdown – May 2024 – DigitalOcean vs. Linode vs. Vultr</a>: Detailed comparison of VPS providers.<small> / </small><small>*vps*, *benchmark*</small><small> / </small><small>3 min read</small>
- <a href="https://www.lirantal.com/blog/poor-express-authentication-patterns-nodejs?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vd3d3LmxpcmFudGFsLmNvbS9ibG9nL3Bvb3ItZXhwcmVzcy1hdXRoZW50aWNhdGlvbi1wYXR0ZXJucy1ub2RlanMiLCJwcm9qZWN0Ijoid2Vla2x5Zm9vIiwiaW5kZXgiOjMyLCJzZWN0aW9uIjoiZ29vZFRvS25vdyIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">Poor Express Authentication Patterns in Node.js and How to Avoid Them</a>: Practical advice if you're using express.<small> / </small><small>*nodejs*, *express*</small><small> / </small><small>7 min read</small>
- <a href="https://dev.to/meteroid/5-lessons-learned-building-our-saas-with-rust-1doj?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZGV2LnRvL21ldGVyb2lkLzUtbGVzc29ucy1sZWFybmVkLWJ1aWxkaW5nLW91ci1zYWFzLXdpdGgtcnVzdC0xZG9qIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6Imdvb2RUb0tub3ciLCJzb3VyY2UiOiJ3ZWIifX0%3D">What we learned building our SaaS with Rust</a>: Always loving this first-hand experiences.<small> / </small><small>*rust*</small><small> / </small><small>29 min read</small>
- <a href="https://docusaurus.io/blog/releases/3.3?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZG9jdXNhdXJ1cy5pby9ibG9nL3JlbGVhc2VzLzMuMyIsInByb2plY3QiOiJ3ZWVrbHlmb28iLCJpbmRleCI6MzIsInNlY3Rpb24iOiJnb29kVG9Lbm93Iiwic291cmNlIjoid2ViIn19">Docusaurus 3.3</a>: Next minor release of Docusaurus<small> / </small><small>*docusaurus*</small><small> / </small><small>5 min read</small>
- <a href="https://softwaredoug.com/blog/2024/05/08/build-an-f-you-network?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vc29mdHdhcmVkb3VnLmNvbS9ibG9nLzIwMjQvMDUvMDgvYnVpbGQtYW4tZi15b3UtbmV0d29yayIsInByb2plY3QiOiJ3ZWVrbHlmb28iLCJpbmRleCI6MzIsInNlY3Rpb24iOiJnb29kVG9Lbm93Iiwic291cmNlIjoid2ViIn19">Dont have F-You money? Build an F-You Network.</a>: Guide to build a network.<small> / </small><small>*career*</small><small> / </small><small>4 min read</small>
- <a href="https://bradfrost.com/blog/post/transparent-borders/?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vYnJhZGZyb3N0LmNvbS9ibG9nL3Bvc3QvdHJhbnNwYXJlbnQtYm9yZGVycy8iLCJwcm9qZWN0Ijoid2Vla2x5Zm9vIiwiaW5kZXgiOjMyLCJzZWN0aW9uIjoiZ29vZFRvS25vdyIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">transparent borders</a>: Don't remove borders from components, make them transparent.<small> / </small><small>*css*</small><small> / </small><small>4 min read</small>
- <a href="https://astro.build/blog/astro-480/?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vYXN0cm8uYnVpbGQvYmxvZy9hc3Ryby00ODAvIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6Imdvb2RUb0tub3ciLCJzb3VyY2UiOiJ3ZWIifX0%3D">Astro 4.8</a>: Astro Actions!<small> / </small><small>*astro*</small><small> / </small><small>5 min read</small>
- <a href="https://ismyhostfastyet.com/?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vaXNteWhvc3RmYXN0eWV0LmNvbS8iLCJwcm9qZWN0Ijoid2Vla2x5Zm9vIiwiaW5kZXgiOjMyLCJzZWN0aW9uIjoiZ29vZFRvS25vdyIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">Is my host fast yet?</a>: Real-world server response (Time to First Byte) latencies, as experienced by real-world users navigating the web.<small> / </small><small>*performance*</small><small> / </small><small>3 min read</small>
- <a href="https://alexwlchan.net/2024/scheduled-screenshots/?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vYWxleHdsY2hhbi5uZXQvMjAyNC9zY2hlZHVsZWQtc2NyZWVuc2hvdHMvIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6Imdvb2RUb0tub3ciLCJzb3VyY2UiOiJ3ZWIifX0%3D">Taking regular screenshots of my website</a>: Great idea. Will implement this for my sites as well!<small> / </small><small>*screenshots*</small><small> / </small><small>10 min read</small>


<Hr />

## 🧰 Tools

- <a href="https://github.com/Stirling-Tools/Stirling-PDF?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9TdGlybGluZy1Ub29scy9TdGlybGluZy1QREYiLCJwcm9qZWN0Ijoid2Vla2x5Zm9vIiwiaW5kZXgiOjMyLCJzZWN0aW9uIjoidG9vbHMiLCJzb3VyY2UiOiJ3ZWIifX0%3D">Stirling-PDF</a>: Locally hosted web application that allows you to perform various operations on PDF files<small> / </small><small>*pdfs*</small>
- <a href="https://uicolors.app?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vdWljb2xvcnMuYXBwIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6InRvb2xzIiwic291cmNlIjoid2ViIn19">UI Colors</a>: Tailwind CSS Color Generator<small> / </small><small>*tailwind*, *css*</small>
- <a href="https://pushkeen.ai/?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vcHVzaGtlZW4uYWkvIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6InRvb2xzIiwic291cmNlIjoid2ViIn19">Pushkeen</a>: Curated collection of the latest push notifications patterns from mobile apps, reflecting the best in growth and user re-activation<small> / </small><small>*collection*</small>
- <a href="https://lifeomic.github.io/chromicons.com/?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vbGlmZW9taWMuZ2l0aHViLmlvL2Nocm9taWNvbnMuY29tLyIsInByb2plY3QiOiJ3ZWVrbHlmb28iLCJpbmRleCI6MzIsInNlY3Rpb24iOiJ0b29scyIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">Chromicons</a>: handcrafted Open Source Icons<small> / </small><small>*icons*</small>
- <a href="https://github.com/fastfetch-cli/fastfetch?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0ZmV0Y2gtY2xpL2Zhc3RmZXRjaCIsInByb2plY3QiOiJ3ZWVrbHlmb28iLCJpbmRleCI6MzIsInNlY3Rpb24iOiJ0b29scyIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">Fastfetch</a>: Like neofetch, but much faster because written mostly in C.<small> / </small><small>*cli*</small>
- <a href="https://github.com/rafasofizada/pechkin?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9yYWZhc29maXphZGEvcGVjaGtpbiIsInByb2plY3QiOiJ3ZWVrbHlmb28iLCJpbmRleCI6MzIsInNlY3Rpb24iOiJ0b29scyIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">Pechkin</a>: Asynchronous Node.js file upload (multipart/form-data) handling.<small> / </small><small>*nodejs*</small>
- <a href="https://github.com/nashaofu/node-screenshots?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9uYXNoYW9mdS9ub2RlLXNjcmVlbnNob3RzIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6InRvb2xzIiwic291cmNlIjoid2ViIn19">node-screenshots</a>: Zero-dependent. A native nodejs screenshots library for Mac, Windows, Linux.<small> / </small><small>*screenshots*</small>
- <a href="https://github.com/breejs/bree?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9icmVlanMvYnJlZSIsInByb2plY3QiOiJ3ZWVrbHlmb28iLCJpbmRleCI6MzIsInNlY3Rpb24iOiJ0b29scyIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">Bree</a>: Bree is a Node.js and JavaScript job task scheduler with worker threads, cron, Date, and human syntax.<small> / </small><small>*scheduler*, *cron*</small>
- <a href="https://github.com/WhiskeySockets/Baileys?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9XaGlza2V5U29ja2V0cy9CYWlsZXlzIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6InRvb2xzIiwic291cmNlIjoid2ViIn19">Baileys</a>: Lightweight full-featured typescript/javascript WhatsApp Web API<small> / </small><small>*whatsapp*</small>
- <a href="https://github.com/jantimon/text-box-trim-examples?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9qYW50aW1vbi90ZXh0LWJveC10cmltLWV4YW1wbGVzIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6InRvb2xzIiwic291cmNlIjoid2ViIn19">CSS Text Box Trim</a>: CSS Text Box Trim is a CSS property that allows you to remove the leading whitespace from a block of text.<small> / </small><small>*css*</small>
- <a href="https://github.com/morellodev/react-awesome-reveal?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tb3JlbGxvZGV2L3JlYWN0LWF3ZXNvbWUtcmV2ZWFsIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6InRvb2xzIiwic291cmNlIjoid2ViIn19">React Awesome Reveal</a>: React components to add reveal animations using the Intersection Observer API and CSS Animations.<small> / </small><small>*react*</small>
- <a href="https://icones.js.org/?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vaWNvbmVzLmpzLm9yZy8iLCJwcm9qZWN0Ijoid2Vla2x5Zm9vIiwiaW5kZXgiOjMyLCJzZWN0aW9uIjoidG9vbHMiLCJzb3VyY2UiOiJ3ZWIifX0%3D">Icones</a>: Icon Explorer with Instant searching, powered by Iconify<small> / </small><small>*icons*</small>
- <a href="https://github.com/tinyworldmap/tiny-world-map?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS90aW55d29ybGRtYXAvdGlueS13b3JsZC1tYXAiLCJwcm9qZWN0Ijoid2Vla2x5Zm9vIiwiaW5kZXgiOjMyLCJzZWN0aW9uIjoidG9vbHMiLCJzb3VyY2UiOiJ3ZWIifX0%3D">tinyworldmap</a>: tinyworldmap is a tiny world map for offline-first and low-bandwidth web apps<small> / </small><small>*maps*</small>
- <a href="https://github.com/ixartz/SaaS-Boilerplate?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9peGFydHovU2FhUy1Cb2lsZXJwbGF0ZSIsInByb2plY3QiOiJ3ZWVrbHlmb28iLCJpbmRleCI6MzIsInNlY3Rpb24iOiJ0b29scyIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">SaaS Boilerplate</a>: SaaS Boilerplate built with Next.js + Tailwind CSS + Shadcn UI + TypeScript.<small> / </small><small>*nextjs*, *tailwind*, *shadcn*, *typescript*, *boilerplate*</small>
- <a href="https://easyfrontend.com/?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZWFzeWZyb250ZW5kLmNvbS8iLCJwcm9qZWN0Ijoid2Vla2x5Zm9vIiwiaW5kZXgiOjMyLCJzZWN0aW9uIjoidG9vbHMiLCJzb3VyY2UiOiJ3ZWIifX0%3D">EasyFrontend</a>: 700+ Free UI Components With Code Editor<small> / </small><small>*ui*</small>
- <a href="https://fullwindcss.com/?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZnVsbHdpbmRjc3MuY29tLyIsInByb2plY3QiOiJ3ZWVrbHlmb28iLCJpbmRleCI6MzIsInNlY3Rpb24iOiJ0b29scyIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">fullwindcss</a>: Extend your tailwind colors<small> / </small><small>*colors*, *tailwind*</small>
- <a href="https://github.com/fabricjs/fabric.js?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9mYWJyaWNqcy9mYWJyaWMuanMiLCJwcm9qZWN0Ijoid2Vla2x5Zm9vIiwiaW5kZXgiOjMyLCJzZWN0aW9uIjoidG9vbHMiLCJzb3VyY2UiOiJ3ZWIifX0%3D">Fabric.js</a>: Javascript Canvas Library, SVG-to-Canvas (& canvas-to-SVG) Parser<small> / </small><small>*canvas*, *svg*</small>
- <a href="https://www.svgviewer.dev/?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vd3d3LnN2Z3ZpZXdlci5kZXYvIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6InRvb2xzIiwic291cmNlIjoid2ViIn19">SVG Viewer</a>: View, edit, and optimize SVGs<small> / </small><small>*svg*</small>


<Hr />

## 🎨 Design

- <a href="https://www.uilabs.dev/?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vd3d3LnVpbGFicy5kZXYvIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6ImRlc2lnbiIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">Small laboratory of fine UI</a>: Website and components designed and built by mrncst<small> / </small><small>*ui*</small><small> / </small><small>3 min read</small>
- <a href="https://yuanchuan.dev/time-based-css-animations?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8veXVhbmNodWFuLmRldi90aW1lLWJhc2VkLWNzcy1hbmltYXRpb25zIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6ImRlc2lnbiIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">Time-based CSS Animations</a>: With some nice examples.<small> / </small><small>*css*</small><small> / </small><small>7 min read</small>
- <a href="https://www.notboring.software/words/the-sound-of-software?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vd3d3Lm5vdGJvcmluZy5zb2Z0d2FyZS93b3Jkcy90aGUtc291bmQtb2Ytc29mdHdhcmUiLCJwcm9qZWN0Ijoid2Vla2x5Zm9vIiwiaW5kZXgiOjMyLCJzZWN0aW9uIjoiZGVzaWduIiwic291cmNlIjoid2ViIn19">The Sound of Software</a>: A story about how to use sound in software.<small> / </small><small>*sound*</small><small> / </small><small>14 min read</small>


<Hr />

## 🤪 Fun

- <a href="https://github.com/sindresorhus/cat-names?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvY2F0LW5hbWVzIiwicHJvamVjdCI6IndlZWtseWZvbyIsImluZGV4IjozMiwic2VjdGlvbiI6ImZ1biIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">cat-names</a>: Get popular cat names<small> / </small><small>*cats*</small><small> / </small><small>5 min read</small>


<Hr />

## 📺 Videos

- <a href="https://www.youtube.com/watch?v=PxIBWjiv3og?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9UHhJQldqaXYzb2ciLCJwcm9qZWN0Ijoid2Vla2x5Zm9vIiwiaW5kZXgiOjMyLCJzZWN0aW9uIjoidmlkcyIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">Production-Grade TypeScript</a>: How the Effect library can help.<small> / </small><small>*typescript*</small>
- <a href="https://www.youtube.com/watch?v=eZfLkVDJPTg?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9ZVpmTGtWREpQVGciLCJwcm9qZWN0Ijoid2Vla2x5Zm9vIiwiaW5kZXgiOjMyLCJzZWN0aW9uIjoidmlkcyIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">What's new in Node js v22</a>: Walk through the Node.js v22 (and v22.1.0) announcements<small> / </small><small>*nodejs*</small>
- <a href="https://www.youtube.com/watch?v=E4l4MBO-Bwg?utm_source=weeklyfoo&utm_medium=web&utm_campaign=weeklyfoo-32&ref=weeklyfoo" target="_blank" rel="noopener" ping="https://api.weeklyfoo.com/api/foo/bar?foo=eyJldmVudCI6InVybC1jbGljayIsInByb3BzIjp7InVybCI6Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9RTRsNE1CTy1Cd2ciLCJwcm9qZWN0Ijoid2Vla2x5Zm9vIiwiaW5kZXgiOjMyLCJzZWN0aW9uIjoidmlkcyIsInNvdXJjZSI6IndlYiJ9fQ%3D%3D">Seamless drag and drop between applications</a>: Drag'n'Drop between apps with Browser APIs<small> / </small><small>*dnd*</small>


Want to read more? Check out the full article [here](https://weeklyfoo.com/foos/foo-032/).

To sign up for the weekly newsletter, visit [weeklyfoo.com](https://weeklyfoo.com).