<?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: Rubayet Hassan </title>
    <description>The latest articles on DEV Community by Rubayet Hassan  (@rrubayet321).</description>
    <link>https://dev.to/rrubayet321</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%2F3808462%2F924bc7ff-dd50-46ea-9d17-5c717fc8f478.png</url>
      <title>DEV Community: Rubayet Hassan </title>
      <link>https://dev.to/rrubayet321</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rrubayet321"/>
    <language>en</language>
    <item>
      <title>YouTube is a black box. I built something to crack it open.</title>
      <dc:creator>Rubayet Hassan </dc:creator>
      <pubDate>Sun, 05 Apr 2026 12:59:02 +0000</pubDate>
      <link>https://dev.to/rrubayet321/youtube-is-a-black-box-i-built-something-to-crack-it-open-283a</link>
      <guid>https://dev.to/rrubayet321/youtube-is-a-black-box-i-built-something-to-crack-it-open-283a</guid>
      <description>&lt;p&gt;You have ten competitor tabs open and a spreadsheet that is already wrong.&lt;/p&gt;

&lt;p&gt;That was me every time I tried to research a YouTube niche. Open a channel, manually note the view counts, switch tabs, lose track, start over. It was embarrassing how much time I was burning just to answer a basic question: &lt;em&gt;what's actually working here?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;ChannelSpy&lt;/strong&gt; — paste any YouTube channel URL and get a full analytics report in seconds.&lt;/p&gt;




&lt;h2&gt;
  
  
  What you actually get
&lt;/h2&gt;

&lt;p&gt;No fluff. Here's what the report gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Quick Read cards&lt;/strong&gt; — plain-language summary of the channel's strengths and weaknesses. No jargon.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KPIs that mean something&lt;/strong&gt; — typical views, engagement rate, momentum, estimated earnings per video&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trend charts&lt;/strong&gt; — visualize upload consistency and performance over time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sortable video grid&lt;/strong&gt; — filter by Long-form vs Shorts, sort by performance score, spot the patterns fast&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSV export&lt;/strong&gt; — decision-ready, Excel-compatible, includes estimated earnings per video&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The part I'm most proud of: honest baselines
&lt;/h2&gt;

&lt;p&gt;Most analytics tools show you averages. Averages lie.&lt;/p&gt;

&lt;p&gt;One viral video can make a 500-subscriber channel look like it consistently pulls 200k views. ChannelSpy uses a &lt;strong&gt;median-first baseline with IQR outlier detection&lt;/strong&gt; — so the "typical views" number actually reflects what a channel normally does, not what it did once on a good day.&lt;/p&gt;

&lt;p&gt;Viral outliers get tagged as &lt;strong&gt;"Unusual spike"&lt;/strong&gt; so you can see them without letting them distort the picture.&lt;/p&gt;




&lt;h2&gt;
  
  
  Estimated earnings
&lt;/h2&gt;

&lt;p&gt;Every video and every channel gets a &lt;strong&gt;tiered CPM earnings estimate&lt;/strong&gt; ($1.50–$5.50 based on view count). It's clearly disclaimed as an estimate — because public CPM averages are the best anyone outside the channel can do — but it's a genuinely useful signal when you're sizing up a niche.&lt;/p&gt;




&lt;h2&gt;
  
  
  Built with
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 16&lt;/strong&gt; (App Router) + &lt;strong&gt;TypeScript&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recharts&lt;/strong&gt; for trend visualization&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;YouTube Data API v3&lt;/strong&gt; — playlist-first ingestion to keep quota predictable&lt;/li&gt;
&lt;li&gt;API key lives server-side only — never exposed to the browser&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;17 passing unit tests&lt;/strong&gt; on core analytics helpers&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://channelspy.vercel.app" rel="noopener noreferrer"&gt;channelspy.vercel.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Paste any YouTube channel handle, channel ID, or full URL. No login, no credit card, no setup.&lt;/p&gt;

&lt;p&gt;If you're a creator, indie hacker, or someone building in a niche where YouTube matters — I'd genuinely love to know what you think.&lt;/p&gt;

&lt;p&gt;What data would make this more useful for you? Drop a comment. I'm actively building based on real feedback.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's coming next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Weekly email digest of tracked competitor activity&lt;/li&gt;
&lt;li&gt;Trend alerts when a competitor video is gaining unusual traction&lt;/li&gt;
&lt;li&gt;Niche benchmarks — how does a channel stack up against its category?&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;The repo is open: &lt;a href="https://github.com/rrubayet321/ChannelSpy" rel="noopener noreferrer"&gt;github.com/rrubayet321/ChannelSpy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Give it a ⭐ if it's useful. And seriously — tell me what you'd want it to do.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>showdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Project Oikya: Breaking the Barrier🌐</title>
      <dc:creator>Rubayet Hassan </dc:creator>
      <pubDate>Wed, 11 Mar 2026 09:06:11 +0000</pubDate>
      <link>https://dev.to/rrubayet321/project-oikya-breaking-the-barrier-42gl</link>
      <guid>https://dev.to/rrubayet321/project-oikya-breaking-the-barrier-42gl</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/wecoded-2026"&gt;2026 WeCoded Challenge&lt;/a&gt;: Frontend Art&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Show us your Art
&lt;/h2&gt;

&lt;p&gt;Check out the live simulation here:&lt;br&gt;
&lt;a href="https://project-oikya.vercel.app/" rel="noopener noreferrer"&gt;Launch Project Oikya&lt;/a&gt; (&lt;em&gt;Tip: Make sure to click and drag your mouse across the center line to see the interation.&lt;/em&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspiration
&lt;/h2&gt;

&lt;p&gt;``"Oikya" (ঐক্য) is Bengali for unity, solidarity, or togetherness. When thinking about gender equity in tech, I didn't just want to make a static drawing. I wanted to build a visual metaphor about action.&lt;/p&gt;

&lt;p&gt;When you first load the site, you see two groups of developers (male and female avatars) separated by a strict, invisible barrier in the middle of the screen. They are moving, but they are completely isolated.&lt;/p&gt;

&lt;p&gt;The core message? That barrier won't break on its own. You have to be the catalyst. By dragging your cursor across the center, you shatter the systemic wall. The avatars immediately flood into a shared space, mixing together and forming glowing network links. It’s a simple reminder that achieving true equity requires active effort to break down old boundaries.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/rrubayet321/project-oikya.git" rel="noopener noreferrer"&gt;Click fot the github link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built this using &lt;strong&gt;Next.js&lt;/strong&gt;, &lt;strong&gt;Tailwind CSS&lt;/strong&gt;, and &lt;strong&gt;react-tsparticles&lt;/strong&gt; for the heavy physics lifting.&lt;/p&gt;

&lt;p&gt;I leaned heavily into rapid "vibe coding" using AI tooling (like Antigravity) to help me handle the complex canvas collision math. That let me focus 100% on the fun stuff: the "Cyber-Data HUD" aesthetic, the glowing typography, and the interactive storytelling.&lt;/p&gt;

&lt;p&gt;Equity isn't passive. Let's keep breaking barriers!&lt;/p&gt;

</description>
      <category>wecoded</category>
      <category>devchallenge</category>
      <category>frontend</category>
      <category>css</category>
    </item>
    <item>
      <title>I got tired of clicking "I Agree" without reading anything. So I fixed it.</title>
      <dc:creator>Rubayet Hassan </dc:creator>
      <pubDate>Sat, 07 Mar 2026 11:27:53 +0000</pubDate>
      <link>https://dev.to/rrubayet321/i-got-tired-of-clicking-i-agree-without-reading-anything-so-i-fixed-it-2ln9</link>
      <guid>https://dev.to/rrubayet321/i-got-tired-of-clicking-i-agree-without-reading-anything-so-i-fixed-it-2ln9</guid>
      <description>&lt;p&gt;&lt;strong&gt;Honestly?&lt;/strong&gt; I've never read a Terms of Service in my life.&lt;/p&gt;

&lt;p&gt;Neither have you. Neither has anyone.&lt;/p&gt;

&lt;p&gt;So I spent a weekend building &lt;strong&gt;SkipTheTerms&lt;/strong&gt; — a Chrome extension that reads them for you and gives back 5–7 bullet points in plain English. Brutally honest. Zero legalese. Done in under 3 seconds.&lt;/p&gt;




&lt;h2&gt;
  
  
  What you actually get
&lt;/h2&gt;

&lt;p&gt;Click the extension on any ToS page and you see something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;• They can delete your account whenever they feel like it
• Your uploaded content is basically theirs now
• "Trusted partners" means they're selling your data to everyone
• You've waived your right to sue them as a group
• Prices change without warning
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. No 47-page PDF. No lawyers needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  How I built it
&lt;/h2&gt;

&lt;p&gt;The extension grabs the page text and sends it to a FastAPI backend. The backend checks a Supabase cache first — if the URL's been seen before, it returns instantly. If not, it calls &lt;strong&gt;Groq's LLaMA 3.3 70B&lt;/strong&gt;, stores the result, and sends it back.&lt;/p&gt;

&lt;p&gt;The whole thing costs basically nothing to run. Cache hits are free. Cache misses cost fractions of a cent.&lt;/p&gt;

&lt;p&gt;The LLM prompt tells the model to act like a &lt;em&gt;"sarcastic lawyer"&lt;/em&gt; — strict format, max 10 words per bullet. That's what keeps the output consistent enough to parse reliably.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; Chrome Extension (vanilla JS) · FastAPI · Groq · Supabase · pytest&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'd change
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The LLM only sees the first 4,000 characters. Long documents lose stuff buried at the end.&lt;/li&gt;
&lt;li&gt;The thumbs-up/down rating has a race condition at high traffic. One atomic SQL update would fix it.&lt;/li&gt;
&lt;li&gt;Backend URL is hardcoded. Oops.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are real tradeoffs, not oversights — but good to-dos for v2.&lt;/p&gt;




&lt;h2&gt;
  
  
  Check it out
&lt;/h2&gt;

&lt;p&gt;Full source, tests, and setup guide on GitHub:&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://github.com/rrubayet321/SkipTheTerms.git" rel="noopener noreferrer"&gt;github.com/rrubayet321/SkipTheTerms&lt;/a&gt;&lt;/strong&gt; make sure to give a star&lt;/p&gt;

&lt;p&gt;Free to run — Groq and Supabase both have generous free tiers, so setup takes maybe 10 minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One heads up:&lt;/strong&gt; it's not on the Chrome Web Store yet. Google charges a one-time $5 developer registration fee and, well, I'm a broke learner. So for now you load it locally via Developer Mode — the README walks you through it, it's literally 3 clicks.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want to collaborate or have ideas?
&lt;/h2&gt;

&lt;p&gt;I'd genuinely love to hear from you — whether it's a feature idea, a ToS that breaks it, or you want to build something together.&lt;/p&gt;

&lt;p&gt;Drop a comment below or shoot me an email at &lt;strong&gt;&lt;a href="mailto:rrubayet321@gmail.com"&gt;rrubayet321@gmail.com&lt;/a&gt;&lt;/strong&gt;. I reply to everything.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;showdev&lt;/code&gt; &lt;code&gt;python&lt;/code&gt; &lt;code&gt;webdev&lt;/code&gt; &lt;code&gt;opensource&lt;/code&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>learning</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I finally stopped tutorial-hell and shipped an AI app for Ramadan 🌙</title>
      <dc:creator>Rubayet Hassan </dc:creator>
      <pubDate>Thu, 05 Mar 2026 18:23:09 +0000</pubDate>
      <link>https://dev.to/rrubayet321/i-finally-stopped-tutorial-hell-and-shipped-an-ai-app-for-ramadan-492p</link>
      <guid>https://dev.to/rrubayet321/i-finally-stopped-tutorial-hell-and-shipped-an-ai-app-for-ramadan-492p</guid>
      <description>&lt;p&gt;I’ve been stuck in "tutorial hell" for a while, but with Ramadan here, I finally decided to stop watching courses and actually ship something. I just pushed Ummah Speaks to GitHub.&lt;/p&gt;

&lt;p&gt;The "Why"&lt;br&gt;
During Ramadan, I wanted a space that felt like talking to a friend who actually understands context—not just a static database. I wanted to be able to "vent" or share how I’m feeling and get back reflections rooted in Islamic wisdom, tailored to that specific moment.&lt;/p&gt;

&lt;p&gt;The App&lt;br&gt;
It's a full-stack (mostly client-side) AI companion built with Next.js 15, Tailwind 4, and the Groq API.&lt;/p&gt;

&lt;p&gt;Personalized Reflections: It uses an LLM to find relevant Hadiths based on your emotional input.&lt;/p&gt;

&lt;p&gt;Ramadan Ready: It has real-time prayer times (Adhan.js) and a digital dhikr counter built-in.&lt;/p&gt;

&lt;p&gt;Privacy-first: This was the hill I chose to die on. Zero data goes to a server. No database. Everything stays in your browser.&lt;/p&gt;

&lt;p&gt;The Struggle&lt;br&gt;
Honestly? Prompt engineering is hard. Getting an LLM to not sound like a corporate robot took about 20 versions of the system prompt. Also, building a "no-backend" app forced me to get creative with the architecture.&lt;/p&gt;

&lt;p&gt;My 3 Big Takeaways&lt;br&gt;
Done &amp;gt; Perfect: An imperfect app on Vercel is 100x better than a perfect one sitting on localhost:3000.&lt;/p&gt;

&lt;p&gt;Context is King: AI isn't magic; it’s all about how you guide the model.&lt;/p&gt;

&lt;p&gt;Build for yourself: When the code broke at 2 AM, I didn't quit because I actually wanted this tool to exist for my own Ramadan journey.&lt;/p&gt;

&lt;p&gt;Check out the repo here: &lt;a href="//github.com/rrubayet321/Ummah-speaks"&gt;Link&lt;/a&gt;&lt;br&gt;
Deployed version here: &lt;a href="https://ummah-speaks.vercel.app/" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ramadan Mubarak! Are you guys shipping any "passion projects" this month? I'd love to see what you're working on. 🚀&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>nextjs</category>
    </item>
  </channel>
</rss>
