<?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: Maessy Sandoval</title>
    <description>The latest articles on DEV Community by Maessy Sandoval (@maessy_sandoval_cb366bd73).</description>
    <link>https://dev.to/maessy_sandoval_cb366bd73</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%2F3866000%2F827a2a54-33f0-4ce1-8af7-dfb4c641da1d.png</url>
      <title>DEV Community: Maessy Sandoval</title>
      <link>https://dev.to/maessy_sandoval_cb366bd73</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/maessy_sandoval_cb366bd73"/>
    <language>en</language>
    <item>
      <title>From 401 Errors to Live Launch: Lessons from Building a Vanilla JS AI Tool</title>
      <dc:creator>Maessy Sandoval</dc:creator>
      <pubDate>Tue, 07 Apr 2026 13:58:24 +0000</pubDate>
      <link>https://dev.to/maessy_sandoval_cb366bd73/from-401-errors-to-live-launch-lessons-from-building-a-vanilla-js-ai-tool-4bej</link>
      <guid>https://dev.to/maessy_sandoval_cb366bd73/from-401-errors-to-live-launch-lessons-from-building-a-vanilla-js-ai-tool-4bej</guid>
      <description>&lt;ol&gt;
&lt;li&gt;The Launch Day Rollercoaster
We’ve all been there. You hit "Deploy," the Lighthouse scores are green, and the UI looks stunning on your mobile browser. But then, the real users arrive.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;My project, Image Background Remover, was designed to be a library-free, high-performance web utility. But within the first few hours, I faced the "Three Horsemen of Launch Failure": 401 Unauthorized, deleted OAuth clients, and 404 Sitemaps.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Technical Blueprint
I chose a Vanilla-First approach to ensure the tool feels native on mobile browsers, prioritizing what I call "wanggan" (internet-friendly) aesthetics:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Vanilla JS/HTML/CSS: Zero heavy frameworks on the frontend to keep the bundle size near-zero.&lt;/p&gt;

&lt;p&gt;Next.js API Routes: Handling the bridge between the user and the processing model securely.&lt;/p&gt;

&lt;p&gt;Cloudflare Pages: For global edge deployment and reliable scaling.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Debugging the "Invisible" Failures
If you are deploying a project using Google OAuth and PayPal, here are the lessons I learned the hard way:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;OAuth Lifecycle: Deleting a Client ID in Google Console immediately breaks your production login. If you leak a secret (as I did), regenerate it, but remember to update your Cloudflare environment variables and manually redeploy.&lt;/p&gt;

&lt;p&gt;The PayPal "Live" Switch: Sandbox is great for testing, but moving to live mode requires more than just changing a toggle. You need to sync your Webhook IDs and ensure your server-side logic handles the production endpoints correctly.&lt;/p&gt;

&lt;p&gt;The Silent 404: Don't assume your sitemap.xml is there just because it's in your public folder. Always verify the path post-deployment to ensure SEO crawlers aren't hitting a wall.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why Bother with Vanilla?
In a world of bloated web apps, this project proves that you don't need 20MB of React libraries to provide real emotional value and utility. By keeping it lightweight:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Users on slow connections get instant results.&lt;/p&gt;

&lt;p&gt;The maintenance overhead is minimal.&lt;/p&gt;

&lt;p&gt;The UX remains fluid and "snappy."&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Final Thoughts
The project is now stable and fully operational. You can see the result here: imagebackground-remover.online.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Question for the community: When building small utilities, do you default to your favorite framework, or do you still find joy in writing pure, "library-free" code?&lt;/p&gt;

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