<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Edvin</title>
    <description>The latest articles on DEV Community by Edvin (@edvincodes).</description>
    <link>https://dev.to/edvincodes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3643312%2Fde0f9682-0bce-49dd-ac32-f84dd8ace348.png</url>
      <title>DEV Community: Edvin</title>
      <link>https://dev.to/edvincodes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/edvincodes"/>
    <language>en</language>
    <item>
      <title>I built the Ultimate Open Source YouTube Downloader (No Ads, Next.js 16) 🎥</title>
      <dc:creator>Edvin</dc:creator>
      <pubDate>Mon, 15 Dec 2025 14:34:01 +0000</pubDate>
      <link>https://dev.to/edvincodes/i-built-the-ultimate-open-source-youtube-downloader-no-ads-nextjs-16-36ja</link>
      <guid>https://dev.to/edvincodes/i-built-the-ultimate-open-source-youtube-downloader-no-ads-nextjs-16-36ja</guid>
      <description>&lt;h2&gt;
  
  
  I built the Ultimate Open Source YouTube Downloader (No Ads, Next.js 16) 🎥
&lt;/h2&gt;

&lt;p&gt;Hi everyone! 👋&lt;/p&gt;

&lt;p&gt;Let's be honest: downloading a YouTube video in 2025 is a nightmare. You search for a converter, and you are bombarded with shady pop-ups, fake download buttons, and NSFW ads.&lt;/p&gt;

&lt;p&gt;I got tired of risking malware just to save a song or a tutorial. So, I built &lt;strong&gt;WavePipe&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is a clean, modern, and open-source web application to download videos and playlists, powered by the industry-standard &lt;code&gt;yt-dlp&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 What is WavePipe?
&lt;/h3&gt;

&lt;p&gt;WavePipe is a Progressive Web App (PWA) that converts YouTube links into MP3 (Audio) or MP4 (Video) files instantly. It's built to be fast, responsive, and completely free of clutter.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✨ Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🚫 Zero Ads:&lt;/strong&gt; No pop-ups, no tracking, no nonsense. Just a clean tool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📦 Playlist Support:&lt;/strong&gt; Download entire playlists in one go (most tools charge for this!).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⚡ Modern Tech:&lt;/strong&gt; Built with &lt;strong&gt;Next.js 16&lt;/strong&gt; and &lt;strong&gt;Tailwind CSS&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📱 PWA Ready:&lt;/strong&gt; You can install it on your phone or desktop as a native-like app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;💪 Power Under the Hood:&lt;/strong&gt; It uses &lt;code&gt;yt-dlp&lt;/code&gt;, the most robust downloader engine available.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📸 Preview
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftdtoxhgyl0kirann0490.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftdtoxhgyl0kirann0490.png" alt=" " width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🛠️ How to use it
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; Go to the app: &lt;strong&gt;&lt;a href="https://wavepipe.onrender.com/" rel="noopener noreferrer"&gt;WavePipe Demo&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; Paste a YouTube Video or Playlist URL.&lt;/li&gt;
&lt;li&gt; Choose your format (MP3 or MP4).&lt;/li&gt;
&lt;li&gt; Hit &lt;strong&gt;Download&lt;/strong&gt; and watch the magic happen.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  👨‍💻 For Developers (The Tech Stack)
&lt;/h3&gt;

&lt;p&gt;This isn't just a frontend wrapper; it's a full-stack solution handling complex media streams.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js 16 (App Router) for server-side rendering and speed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling:&lt;/strong&gt; Tailwind CSS for a responsive, mobile-first design.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Core Engine:&lt;/strong&gt; &lt;code&gt;yt-dlp&lt;/code&gt; (Python). The app spawns a process to handle the extraction and conversion logic securely on the server side.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture:&lt;/strong&gt; It handles stream piping to deliver files to the browser without overloading server memory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is fully &lt;strong&gt;Open Source&lt;/strong&gt;. If you want to see how I handled the child processes or the Next.js API routes, check out the code:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/EdvinCodes/wavepipe" rel="noopener noreferrer"&gt;EdvinCodes/WavePipe&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🐛 Feedback
&lt;/h3&gt;

&lt;p&gt;I built this to have a tool I can trust on my own devices. I hope you find it as useful as I do!&lt;/p&gt;

&lt;p&gt;If you like the project, a &lt;strong&gt;Star ⭐️ on GitHub&lt;/strong&gt; is greatly appreciated.&lt;/p&gt;

&lt;p&gt;Happy downloading! 🌊&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>react</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I built a Free Spotify to YouTube Music Migrator 🎵 (Python + React)</title>
      <dc:creator>Edvin</dc:creator>
      <pubDate>Mon, 15 Dec 2025 12:17:30 +0000</pubDate>
      <link>https://dev.to/edvincodes/i-built-a-free-spotify-to-youtube-music-migrator-python-react-3eb1</link>
      <guid>https://dev.to/edvincodes/i-built-a-free-spotify-to-youtube-music-migrator-python-react-3eb1</guid>
      <description>&lt;h2&gt;
  
  
  I built a Free Spotify to YouTube Music Migrator 🎵
&lt;/h2&gt;

&lt;p&gt;Hi everyone! 👋&lt;/p&gt;

&lt;p&gt;We've all been there: you want to switch from Spotify to YouTube Music (or just sync your playlists), but every tool out there asks for a monthly subscription or limits you to "first 100 songs free".&lt;/p&gt;

&lt;p&gt;As a developer, I didn't want to pay to move my own data. So, I built &lt;strong&gt;LinkList&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is a Full Stack web application that migrates your playlists automatically, wrapped in a modern &lt;strong&gt;Neon-Cyberpunk interface&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 What is LinkList?
&lt;/h3&gt;

&lt;p&gt;LinkList connects to your Spotify account, reads your playlists, and uses a powerful Python backend to find and recreate those songs on YouTube Music. No caps, no paywalls.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✨ Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;💸 100% Free &amp;amp; Open Source:&lt;/strong&gt; No "premium" tiers or song limits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🎨 Cyberpunk UI:&lt;/strong&gt; A responsive, neon-themed interface built with &lt;strong&gt;React&lt;/strong&gt; and &lt;strong&gt;Tailwind CSS&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🧠 Smart Matching:&lt;/strong&gt; The backend searches for the best match on YouTube Music, not just the first result.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⚡ Full Stack Power:&lt;/strong&gt; Combines the speed of a React frontend with the data-processing power of Python.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📸 Preview
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiz7h6r3u9r27js7rh9hs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiz7h6r3u9r27js7rh9hs.png" alt=" " width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🛠️ How it works
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; Go to the live demo: &lt;strong&gt;&lt;a href="https://link-list-gamma.vercel.app/" rel="noopener noreferrer"&gt;LinkList App&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; Log in with your &lt;strong&gt;Spotify&lt;/strong&gt; account to load your playlists.&lt;/li&gt;
&lt;li&gt; Authenticate with &lt;strong&gt;YouTube Music&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Select a playlist and watch the magic happen!&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  👨‍💻 For Developers (The Tech Stack)
&lt;/h3&gt;

&lt;p&gt;Unlike my previous client-side tools, this is a robust Full Stack application.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React (Vite) + Tailwind CSS for that crisp Neon look.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python (Flask). I chose Python because of its incredible libraries for data handling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;APIs:&lt;/strong&gt; Uses &lt;code&gt;Spotipy&lt;/code&gt; for Spotify data and &lt;code&gt;ytmusicapi&lt;/code&gt; to interact with YouTube Music.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; Vercel (Frontend).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is completely &lt;strong&gt;Open Source&lt;/strong&gt;. You can check how I handled the OAuth flow and the Python-React communication here:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/edvincodes/LinkList" rel="noopener noreferrer"&gt;EdvinCodes/LinkList&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🐛 Feedback
&lt;/h3&gt;

&lt;p&gt;I built this to solve my own problem, but I'd love to hear what you think. If you try it out, let me know if the "Cyberpunk" vibe works for you!&lt;/p&gt;

&lt;p&gt;If you find it useful, consider dropping a star ⭐️ on the repo.&lt;/p&gt;

&lt;p&gt;Happy coding and happy listening! 🎧🚀&lt;/p&gt;

</description>
      <category>python</category>
      <category>react</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I built an Open Source Instagram Unfollowers tool (No Login required)</title>
      <dc:creator>Edvin</dc:creator>
      <pubDate>Wed, 03 Dec 2025 11:09:46 +0000</pubDate>
      <link>https://dev.to/edvincodes/i-built-an-open-source-instagram-unfollowers-tool-no-login-required-4agi</link>
      <guid>https://dev.to/edvincodes/i-built-an-open-source-instagram-unfollowers-tool-no-login-required-4agi</guid>
      <description>&lt;h1&gt;
  
  
  I built an Open Source Instagram Unfollowers tool (No Login required) 🛡️
&lt;/h1&gt;

&lt;p&gt;Hi everyone! 👋&lt;/p&gt;

&lt;p&gt;I was tired of "Unfollowers" apps that require a monthly subscription, show tons of ads, or worse—&lt;strong&gt;ask for my Instagram password&lt;/strong&gt; (which is a huge security risk).&lt;/p&gt;

&lt;p&gt;So, being a developer, I decided to build a safe, open-source alternative. I took inspiration from existing community scripts and wrapped them into a modern, user-friendly tool with a brand new &lt;strong&gt;Glassmorphism UI&lt;/strong&gt; and &lt;strong&gt;Mobile support&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 What is "Instagram Unfollowers 2025"?
&lt;/h2&gt;

&lt;p&gt;It's a script that runs locally in your browser console. It scans your followers/following lists using your active session and shows you exactly who isn't following you back.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✨ Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🛡️ 100% Safe:&lt;/strong&gt; It runs on your side (client-side). No password required.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⚡ No Login:&lt;/strong&gt; It uses your active browser session cookies securely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📱 Mobile Ready:&lt;/strong&gt; Works on iOS/Android via a simple bookmarklet trick.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🧠 Smart Logic:&lt;/strong&gt; Includes "Safe Mode" delays to prevent soft-bans from Instagram.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🎨 Modern UI:&lt;/strong&gt; Built with &lt;strong&gt;Preact&lt;/strong&gt; and &lt;strong&gt;Shadow DOM&lt;/strong&gt; to inject a beautiful interface without breaking Instagram's layout.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📸 Preview
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fch8wtnqpojlbp0xchwum.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fch8wtnqpojlbp0xchwum.png" alt="Instagram Unfollowers Dashboard" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;(The tool running on Desktop)&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ How to use it
&lt;/h2&gt;

&lt;p&gt;You don't need to install Node.js or clone the repo if you just want to use it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Go to the official site: &lt;strong&gt;&lt;a href="https://edvincodes.github.io/InstagramUnfollowers/" rel="noopener noreferrer"&gt;https://edvincodes.github.io/InstagramUnfollowers/&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; Click the &lt;strong&gt;"Copy Code"&lt;/strong&gt; button.&lt;/li&gt;
&lt;li&gt; Open Instagram.com on your PC (or Mobile browser).&lt;/li&gt;
&lt;li&gt; Open the &lt;strong&gt;Developer Console&lt;/strong&gt; (F12) and paste the code.&lt;/li&gt;
&lt;li&gt; Hit Enter and enjoy!&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  👨‍💻 For Developers (The Tech Stack)
&lt;/h2&gt;

&lt;p&gt;For those interested in the code, the project is built using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript&lt;/strong&gt; for type safety.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preact&lt;/strong&gt; for a lightweight UI inside the browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadow DOM&lt;/strong&gt; to isolate styles from Instagram's CSS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Webpack&lt;/strong&gt; to bundle everything into a single copy-pasteable script.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is completely &lt;strong&gt;Open Source&lt;/strong&gt;. You can audit the code, contribute, or give it a star ⭐️ here:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/EdvinCodes/InstagramUnfollowers" rel="noopener noreferrer"&gt;GitHub Repository: EdvinCodes/InstagramUnfollowers&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🐛 Feedback &amp;amp; Support
&lt;/h2&gt;

&lt;p&gt;This project is heavily based on community knowledge, and I want to keep improving it.&lt;/p&gt;

&lt;p&gt;If you find any bugs or have suggestions, please let me know in the comments below or email me directly at: &lt;strong&gt;&lt;a href="mailto:edvintrabajo@gmail.com"&gt;edvintrabajo@gmail.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Hope it helps you clean up your feed! Happy coding! 🚀&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>opensource</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
