This is My First and Last 'Vibe Coded' Product
Source: Dev.to
Introduction
If you think you can just sit back and let Copilot or Cursor build a complex desktop‑to‑browser architecture for you, let me stop you right there. The AI completely f*cked my codebase at the start. It wrote brilliant functions, confidently deleted them two prompts later, and introduced bugs that kept me awake for days during my sessional exams.
This is the story of how a simple script to survive load shedding turned into a two‑week debugging nightmare, and why FlashYT is the last app I will ever “vibe code.”
Story
If you live in Pakistan, you know the drill. You plan out your day, sit down to grind through some university lectures or a new tech skill, and suddenly—the power goes out. The Wi‑Fi dies.
To survive the load shedding, I started using yt‑dlp to download my study materials. But let’s be honest: I am lazy. Having to open a terminal, paste a URL, and manually type out format flags every single time I wanted a specific 1080p video was a terrible user experience. I just wanted a simple button next to the YouTube player.
I initially threw together a quick Tampermonkey script connected to a Python FastAPI backend. It worked beautifully on my laptop. Feeling proud, I shared it with a friend who had the same problem.
We set it up on his machine, and… it completely failed.
At that point my ego was genuinely hurt. This failure sent me down a rabbit hole. I started researching why so many popular YouTube downloader extensions eventually break or get removed. The answer was simple: they route traffic through central servers, which eventually get flagged and blocked.
I realized the only way to build a tool that survives is to make the user their own server. I discovered Chrome’s Native Messaging API, which allows a browser extension to talk directly to a local Python script running quietly on the desktop. No cloud, no IP blocks, just a seamless, 1‑click download right from the YouTube interface.
The Nightmare of Vibe Coding
Since this architecture was completely new to me, I decided to test the current state of AI. I tried to “vibe code” the whole thing, commanding LLMs like Copilot and Cursor to write the logic without me deeply understanding the foundations first.
It was my first time relying this heavily on AI, and I can confidently say it will be my last.
For two weeks, right through my 4th‑semester sessional exams, I completely forgot about sleep. The AI would write a brilliant block of code, only to confidently delete it two prompts later. It would “fix” one bug by creating three new ones. And right when I was deep into tracing a critical error, the models would hit their usage limits, leaving me staring at broken code at 4 AM.
Debugging AI‑generated spaghetti code when you don’t fully grasp the underlying system is pure torture. I almost gave up.
Then my sister asked me for a tool to download some YouTube videos. That was the push I needed. I stopped blindly trusting the AI, started actually reading the docs, fixed the architecture myself, and finally stabilized the native host connection.
FlashYT Is Alive
Today, I am open‑sourcing FlashYT. It works on Linux, macOS, and Windows. It adds a simple “Download” button directly to the YouTube player, fetches exact qualities instantly, and downloads up to 4K video seamlessly.
- Completely free, open‑source, and has zero ads.
- Not perfect – still in testing with edge cases to iron out – but it solves the exact problem I set out to fix.
If you are tired of shady download websites, give FlashYT a try. Check out the repo, install the beta, break it, and let me know what needs fixing.
🔗 Repo & Installation: