<?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>Forem: Malik Sohaib iqbal</title>
    <description>The latest articles on Forem by Malik Sohaib iqbal (@malik_sohaib_iqbal).</description>
    <link>https://forem.com/malik_sohaib_iqbal</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%2F3806762%2F98fa7891-94f4-431a-a947-6d8c63d03c72.jpeg</url>
      <title>Forem: Malik Sohaib iqbal</title>
      <link>https://forem.com/malik_sohaib_iqbal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/malik_sohaib_iqbal"/>
    <language>en</language>
    <item>
      <title>I Spent 3 Hours Debugging a Vercel 404 on My Lovable App. Here's What Fixed It.</title>
      <dc:creator>Malik Sohaib iqbal</dc:creator>
      <pubDate>Wed, 13 May 2026 21:08:51 +0000</pubDate>
      <link>https://forem.com/malik_sohaib_iqbal/i-spent-3-hours-debugging-a-vercel-404-on-my-lovable-app-heres-what-fixed-it-5ele</link>
      <guid>https://forem.com/malik_sohaib_iqbal/i-spent-3-hours-debugging-a-vercel-404-on-my-lovable-app-heres-what-fixed-it-5ele</guid>
      <description>&lt;p&gt;*May 2026 | Tags: *&lt;/p&gt;




&lt;p&gt;Let me paint you a picture.&lt;/p&gt;

&lt;p&gt;You just finished building something cool on &lt;a href="https://lovable.dev" rel="noopener noreferrer"&gt;Lovable&lt;/a&gt;. You're excited. You connect it to Vercel, hit deploy, watch the build logs fly by — green checkmarks, everything looks great. You click your shiny new URL and...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;404: NOT_FOUND
Code: NOT_FOUND
ID: bom1::l6cqn-1778704042023-1d630b2554e3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Brutal.&lt;/p&gt;

&lt;p&gt;So you google it. Every answer says the same thing: &lt;em&gt;"add a vercel.json with a rewrite rule."&lt;/em&gt; You do that. You redeploy. You refresh. Same 404. You add it again. You triple-check the placement. Still broken. At this point you're questioning your life choices.&lt;/p&gt;

&lt;p&gt;I've been there. This post is what I wish I had found at hour one instead of hour three.&lt;/p&gt;




&lt;h2&gt;
  
  
  First, Why Does This Even Happen?
&lt;/h2&gt;

&lt;p&gt;Here's the thing nobody explains clearly: &lt;strong&gt;Lovable recently switched its entire stack to TanStack Start&lt;/strong&gt;, and that changes everything about how deployment works.&lt;/p&gt;

&lt;p&gt;The old rewrite trick worked because old Lovable apps were plain SPAs — just static files. Vercel would serve &lt;code&gt;index.html&lt;/code&gt; for every route and React would handle the rest. Simple.&lt;/p&gt;

&lt;p&gt;But crack open your &lt;code&gt;vite.config.ts&lt;/code&gt; in any recent Lovable project and you'll see something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// @lovable.dev/vite-tanstack-config already includes the following — do NOT add them manually:&lt;/span&gt;
&lt;span class="c1"&gt;//   - tanstackStart, viteReact, tailwindcss, tsConfigPaths, cloudflare (build-only) ...&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;defineConfig&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@lovable.dev/vite-tanstack-config&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineConfig&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See that &lt;code&gt;tanstackStart&lt;/code&gt; in the comment? That's the culprit — well, not a culprit exactly, more like the thing that changes all the rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TanStack Start is a full-stack SSR framework.&lt;/strong&gt; It's not just a router slapped on top of React. It has server functions, data loaders, and actual server-side rendering. It's closer to Next.js than it is to a plain Vite app.&lt;/p&gt;

&lt;p&gt;So when Vercel gets a request for &lt;code&gt;/dashboard&lt;/code&gt;, it looks for a file called &lt;code&gt;dashboard&lt;/code&gt;. There isn't one. It doesn't know your app handles routing on the server. It just throws a 404 and calls it a day.&lt;/p&gt;

&lt;p&gt;That error ID starting with &lt;code&gt;bom1::&lt;/code&gt; is actually a clue — that means Vercel itself is rejecting the request before your app even gets a chance to breathe.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Fix That Actually Works
&lt;/h2&gt;

&lt;p&gt;The answer is &lt;a href="https://nitro.build/" rel="noopener noreferrer"&gt;Nitro&lt;/a&gt; — a universal deployment adapter that tells Vercel exactly how to run a TanStack Start app. Vercel even has &lt;a href="https://vercel.com/docs/frameworks/full-stack/tanstack-start" rel="noopener noreferrer"&gt;official docs for this&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here's what you do, step by step.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Install Nitro
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;nitro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Update your &lt;code&gt;vite.config.ts&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;This is the important part. You're not replacing anything — just adding the Nitro plugin inside the &lt;code&gt;vite&lt;/code&gt; config option:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;defineConfig&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@lovable.dev/vite-tanstack-config&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;nitro&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;nitro/vite&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineConfig&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;vite&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="nf"&gt;nitro&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;preset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;vercel&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That &lt;code&gt;preset: "vercel"&lt;/code&gt; is what tells Nitro to output your build in exactly the format Vercel expects. No guessing, no rewrites, no hacks.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Delete your vercel.json
&lt;/h3&gt;

&lt;p&gt;If you added one, get rid of it. Nitro handles all of that now, and having both will just confuse things.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Check your Vercel project settings
&lt;/h3&gt;

&lt;p&gt;While you're at it, make sure these are set correctly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Output Directory&lt;/strong&gt; → &lt;code&gt;dist&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js Version&lt;/strong&gt; → &lt;code&gt;22&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Don't forget your environment variables
&lt;/h3&gt;

&lt;p&gt;This one bites a lot of people. Lovable keeps your secrets in its own environment — they don't magically appear in Vercel. Go to &lt;strong&gt;Settings → Environment Variables&lt;/strong&gt; and manually add everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;VITE_SUPABASE_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VITE_SUPABASE_ANON_KEY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Any other &lt;code&gt;VITE_*&lt;/code&gt; variables your app needs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And set them for &lt;strong&gt;Production&lt;/strong&gt;, &lt;strong&gt;Preview&lt;/strong&gt;, and &lt;strong&gt;Development&lt;/strong&gt; — not just production. Future you will thank you.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Redeploy without cache
&lt;/h3&gt;

&lt;p&gt;Go to your latest deployment in Vercel and choose &lt;strong&gt;"Redeploy → Redeploy without existing Build Cache"&lt;/strong&gt;. Old cached builds have caused me more grief than I'd like to admit.&lt;/p&gt;

&lt;p&gt;That's it. Push your changes and it should work.&lt;/p&gt;




&lt;h2&gt;
  
  
  Honestly? Cloudflare Pages Is Even Easier
&lt;/h2&gt;

&lt;p&gt;If you look at that &lt;code&gt;vite.config.ts&lt;/code&gt; comment again, you'll notice it also mentions &lt;code&gt;cloudflare (build-only)&lt;/code&gt;. That's not an accident — Lovable actually ships with a Cloudflare adapter built in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pages.cloudflare.com" rel="noopener noreferrer"&gt;Cloudflare Pages&lt;/a&gt; is what Lovable was originally designed to deploy to. No Nitro setup, no extra packages, no configuration files. You connect your GitHub repo, set the output to &lt;code&gt;dist&lt;/code&gt;, add your env vars, and it just works.&lt;/p&gt;

&lt;p&gt;It also gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free custom domains with automatic SSL&lt;/li&gt;
&lt;li&gt;Unlimited bandwidth on the free tier&lt;/li&gt;
&lt;li&gt;Instant global deployments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you don't have a specific reason to be on Vercel, honestly just use Cloudflare Pages. You'll save yourself a lot of trouble.&lt;/p&gt;




&lt;h2&gt;
  
  
  One More Thing — The TanStack Security Scare
&lt;/h2&gt;

&lt;p&gt;While I was writing this, news broke about a supply chain attack on TanStack packages. If you saw the headlines and got nervous, here's the short version of what happened.&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;May 11, 2026&lt;/strong&gt;, a hacker group called TeamPCP did something genuinely clever and scary. They didn't steal any passwords or API keys. Instead they found three separate weaknesses in TanStack's GitHub Actions pipeline and chained them together:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;They opened a pull request from a fork that ran their code in CI&lt;/li&gt;
&lt;li&gt;That code poisoned the build cache with malware&lt;/li&gt;
&lt;li&gt;When a legitimate TanStack maintainer later merged a totally unrelated PR, the release pipeline restored that poisoned cache — and the malware extracted a short-lived publish token from memory and used it to push malicious packages to npm&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The result was &lt;strong&gt;84 malicious versions of 42 TanStack packages&lt;/strong&gt; published to npm — all with valid security certificates, looking completely legitimate. The attack was caught by an external security researcher within about 20 minutes, which is genuinely impressive response time.&lt;/p&gt;

&lt;p&gt;You can read the full story from the TanStack team themselves: &lt;a href="https://tanstack.com/blog/npm-supply-chain-compromise-postmortem" rel="noopener noreferrer"&gt;postmortem&lt;/a&gt; and &lt;a href="https://tanstack.com/blog/incident-followup" rel="noopener noreferrer"&gt;hardening follow-up&lt;/a&gt;. They're unusually transparent about what went wrong and what they're fixing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should you be worried as a Lovable user?&lt;/strong&gt; Probably not. Here's why:&lt;/p&gt;

&lt;p&gt;The entire attack window was &lt;strong&gt;6 minutes&lt;/strong&gt;. Only developers who ran &lt;code&gt;npm install&lt;/code&gt; during those specific 6 minutes on May 11 were at risk. Your deployed app doesn't run &lt;code&gt;npm install&lt;/code&gt; — it's already built. And TanStack themselves confirmed that &lt;code&gt;@tanstack/query&lt;/code&gt;, &lt;code&gt;@tanstack/table&lt;/code&gt;, &lt;code&gt;@tanstack/form&lt;/code&gt;, &lt;code&gt;@tanstack/virtual&lt;/code&gt;, and &lt;code&gt;@tanstack/store&lt;/code&gt; were never touched.&lt;/p&gt;

&lt;p&gt;This isn't a reason to abandon TanStack. It's the kind of attack that can hit any open source project with a CI/CD pipeline — the same technique was used against Bitwarden CLI, Mistral AI, and UiPath in the same campaign. The TanStack team handled it well and are now significantly hardening their pipeline.&lt;/p&gt;

&lt;p&gt;More reading if you want the technical deep-dive:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://snyk.io/blog/tanstack-npm-packages-compromised/" rel="noopener noreferrer"&gt;Snyk's full breakdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wiz.io/blog/mini-shai-hulud-strikes-again-tanstack-more-npm-packages-compromised" rel="noopener noreferrer"&gt;Wiz Blog analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/TanStack/router/security/advisories/GHSA-g7cv-rxg3-hmpx" rel="noopener noreferrer"&gt;GitHub Security Advisory GHSA-g7cv-rxg3-hmpx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.securityweek.com/tanstack-mistral-ai-uipath-hit-in-fresh-supply-chain-attack/" rel="noopener noreferrer"&gt;SecurityWeek coverage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quick Reference
&lt;/h2&gt;

&lt;p&gt;If you just want the cheat sheet:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;404 on every route&lt;/td&gt;
&lt;td&gt;Add Nitro with &lt;code&gt;preset: "vercel"&lt;/code&gt; to vite.config.ts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"No output directory named build"&lt;/td&gt;
&lt;td&gt;Set output directory to &lt;code&gt;dist&lt;/code&gt; in Vercel settings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blank white screen after deploy&lt;/td&gt;
&lt;td&gt;Add your &lt;code&gt;VITE_*&lt;/code&gt; env vars to Vercel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Still broken after changes&lt;/td&gt;
&lt;td&gt;Redeploy without build cache&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Want zero config deployment&lt;/td&gt;
&lt;td&gt;Switch to Cloudflare Pages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Worried about the May 11 attack&lt;/td&gt;
&lt;td&gt;You're fine — 6 minute window, now patched&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;em&gt;If this saved you a few hours of headache, drop a ❤️ or leave a comment — especially if you hit a different variation of this problem. And if you're in the Lovable Discord or community, share this around. A lot of people are hitting this wall right now and don't know why.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>tanstack</category>
      <category>lovable</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Stop Hiding It: Why "Vibe Coding" is the Ultimate Flex in 2026 🚀</title>
      <dc:creator>Malik Sohaib iqbal</dc:creator>
      <pubDate>Tue, 07 Apr 2026 21:00:24 +0000</pubDate>
      <link>https://forem.com/malik_sohaib_iqbal/stop-hiding-it-why-vibe-coding-is-the-ultimate-flex-in-2026-1j2b</link>
      <guid>https://forem.com/malik_sohaib_iqbal/stop-hiding-it-why-vibe-coding-is-the-ultimate-flex-in-2026-1j2b</guid>
      <description>&lt;p&gt;Let’s be real for a second. There’s a weird hush-hush energy in the dev community right now. People are shipping incredible web apps in record time, but when you ask how they did it, they get quiet. They don't want to admit they’re Vibe Coding.&lt;/p&gt;

&lt;p&gt;If you're building with AI—leveraging models like Gemini, Claude, or Lovable to manifest your ideas—stop apologizing for it. ### 🎭 The Stigma vs. The Reality&lt;br&gt;
Some people think that if you aren't manually typing every semicolon, you aren't "really" coding. I think that’s a legacy mindset.&lt;/p&gt;

&lt;p&gt;Vibe coding isn't just "letting the AI do it." In my experience, it’s actually a high-level skill. To vibe code effectively, you need:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Clear Vision:&lt;/strong&gt; You have to know exactly what you want to build.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strategic Intent:&lt;/strong&gt; You have to understand why you are building it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architectural Oversight:&lt;/strong&gt; You still need to understand the proper architecture to guide the AI toward a scalable, functional product.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 The Shift: From Syntax to Strategy
&lt;/h2&gt;

&lt;p&gt;In the coming years, the barrier to entry for "syntax" will hit zero. The real value will lie in creativity.&lt;/p&gt;

&lt;p&gt;We are moving into an era where being a developer means being an architect of ideas. If you can define the "what" and the "why," the "how" becomes a collaborative dance between you and the machine. That’s not a shortcut; that’s an evolution.&lt;/p&gt;

&lt;h2&gt;
  
  
  📉 Is AI Vanishing? (Spoiler: No)
&lt;/h2&gt;

&lt;p&gt;I hear the whispers: "The AI bubble will burst." Look at the global landscape. The world's superpowers and biggest tech giants are pouring trillions into this. The power of AI isn't going to decrease; it’s going to compound.&lt;/p&gt;

&lt;p&gt;AI isn't going to vanish—it's going to become the floor we stand on.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 My Takeaway
&lt;/h2&gt;

&lt;p&gt;Vibe coding is a great &lt;strong&gt;achievement&lt;/strong&gt;. It shows you’ve mastered the art of leveraging modern tools to bring ideas to life. Be ready, be more creative, and focus on the goals behind your code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do you think? Is "Vibe Coding" the future of software engineering, or are we losing something vital by moving away from manual implementation?&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>🌪️ Proof of Work: The To-Do List of Infinite Regret</title>
      <dc:creator>Malik Sohaib iqbal</dc:creator>
      <pubDate>Wed, 01 Apr 2026 20:49:57 +0000</pubDate>
      <link>https://forem.com/malik_sohaib_iqbal/proof-of-work-the-to-do-list-of-infinite-regret-48le</link>
      <guid>https://forem.com/malik_sohaib_iqbal/proof-of-work-the-to-do-list-of-infinite-regret-48le</guid>
      <description>&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;**&lt;br&gt;
I built a productivity app for people who hate being productive. Proof of Work is a digital psychological experiment that turns simple task management into a high-stakes gamble.&lt;/p&gt;

&lt;p&gt;The gimmick? You cannot "check off" a task. To complete anything (e.g., "Buy Milk"), you must first win a game of Minesweeper on an Expert-level grid (30x16 with 99 mines). If you hit a mine, the Hydra Engine triggers: your task isn't cleared—it duplicates 20 times. Now you have to buy milk 21 times. It is a functional implementation of a "short-circuit" for the human brain.&lt;/p&gt;

&lt;p&gt;Demo&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://useless-to-do-list.vercel.app/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;useless-to-do-list.vercel.app&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
Code&lt;br&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/MalikSohaibIqbal" rel="noopener noreferrer"&gt;
        MalikSohaibIqbal
      &lt;/a&gt; / &lt;a href="https://github.com/MalikSohaibIqbal/Useless-To-Do-list" rel="noopener noreferrer"&gt;
        Useless-To-Do-list
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      The ultimate anti-productivity suite. Compliant with HTCPCP/1.0 (RFC 2324). Requires Expert-level Minesweeper proof-of-work to complete any task. Built with React, Lovable, and the existential dread of Google Gemini.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🌪️ Proof of Work: The To-Do List of Infinite Regret&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;em&gt;A Productivity App for People Who Hate Being Productive.&lt;/em&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/418" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6f1ef7854e6166a4f561d1f6c6c22ba267075e9819b723b3f14951dde545a31e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f485454502d34313825323049276d25323061253230546561706f742d726564" alt="Status Code"&gt;&lt;/a&gt;
&lt;a href="https://datatracker.ietf.org/doc/html/rfc2324" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6e5efa2818c3460af601ba1b62e80084b7783d9074363bea61b299ed264a9200/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f50726f746f636f6c2d485443504350253246312e302d626c7565" alt="Protocol"&gt;&lt;/a&gt;
&lt;a href="https://github.com/MalikSohaibIqbal/Useless-To-Do-list#-ai-driven-development" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/685063bc2a418317dc0505966128bb6c9f495291d24d9dd13000dab321df8fb9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4275696c74253230776974682d4c6f7661626c6525323025324225323047656d696e692d376633616630" alt="AI"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📌 Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Proof of Work&lt;/strong&gt; is a digital psychological experiment disguised as a task manager. Built for the &lt;strong&gt;HTCPCP Challenge&lt;/strong&gt;, this app solves the "problem" of having too much to do by making it statistically impossible to finish anything.&lt;/p&gt;
&lt;p&gt;By merging the high-stakes logic of Minesweeper with the "I'm a Teapot" philosophy of &lt;strong&gt;Larry Masinter&lt;/strong&gt;, we have created a "short-circuit" for human productivity. It is a Ferrari engine inside a unicycle—technically impressive, yet fundamentally useless.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🛠️ The "Pain" Features&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;1. The Minesweeper Gatekeeper&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;You cannot simply "check off" a task. Clicking the completion box triggers a full-screen &lt;strong&gt;Minesweeper Expert Grid&lt;/strong&gt; ($30 \times 16$ with $99$ mines).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Victory:&lt;/strong&gt; The task is cleared.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Failure:&lt;/strong&gt; You hit a mine, and the &lt;strong&gt;Hydra Engine&lt;/strong&gt; activates.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;2. The Hydra Engine (The Punishment)&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;If…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/MalikSohaibIqbal/Useless-To-Do-list" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;How I Built It&lt;br&gt;
This project was a "Dual-AI" collaboration:&lt;/p&gt;

&lt;p&gt;Lovable: Acted as the Lead Architect, managing the complex React state required for the "Hydra" task duplication and the retro-brutalist UI.&lt;/p&gt;

&lt;p&gt;Google Gemini: Served as the "Existential Consultant," curateing a library of 2,000+ unique demotivational quotes based on astrophysics and biology to remind users of their cosmic insignificance.&lt;/p&gt;

&lt;p&gt;Tech Stack: React, Vite, Tailwind CSS, and localStorage to ensure your failures persist even after a browser refresh.&lt;/p&gt;

&lt;p&gt;Prize Category&lt;br&gt;
🤖 Best Google AI Usage&lt;br&gt;
I leveraged Google Gemini to build the "Universal Entropy Engine." Every task is paired with an AI-generated reason why it doesn't matter (e.g., "The heat death of the universe renders 'Wash Dishes' mathematically irrelevant"). Gemini ensured the content was scientifically accurate, strictly neutral, and emotionally taxing.&lt;/p&gt;

&lt;p&gt;🫖 Best Ode to Larry Masinter&lt;br&gt;
This app is fully HTCPCP/1.0 (RFC 2324) compliant. If a user tries to close the Minesweeper modal or "cheat" the productivity trial, the app returns a hard 418 I'm a Teapot error. As a teapot, the software refuses to brew your productivity. We even injected the X-Brewing-Protocol header into the metadata as a tribute to Larry's legacy of intentional uselessness.&lt;/p&gt;

&lt;p&gt;Built with ❤️ and a total lack of productivity.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>418challenge</category>
      <category>showdev</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
