<?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: Sayyed Amaan Ali</title>
    <description>The latest articles on DEV Community by Sayyed Amaan Ali (@sayyed_amaanali_8633c4ce).</description>
    <link>https://dev.to/sayyed_amaanali_8633c4ce</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4016749%2Fe0945328-3aad-410a-a088-746a62349d92.jpg</url>
      <title>DEV Community: Sayyed Amaan Ali</title>
      <link>https://dev.to/sayyed_amaanali_8633c4ce</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sayyed_amaanali_8633c4ce"/>
    <language>en</language>
    <item>
      <title>Building the Credit System for My AI Prompt Optimizer</title>
      <dc:creator>Sayyed Amaan Ali</dc:creator>
      <pubDate>Sun, 12 Jul 2026 04:50:50 +0000</pubDate>
      <link>https://dev.to/sayyed_amaanali_8633c4ce/building-the-credit-system-for-my-ai-prompt-optimizer-59ee</link>
      <guid>https://dev.to/sayyed_amaanali_8633c4ce/building-the-credit-system-for-my-ai-prompt-optimizer-59ee</guid>
      <description>&lt;p&gt;Today I completed one of the core backend features of my AI Prompt Optimizer: the credit management system.&lt;/p&gt;

&lt;p&gt;At first, I thought it would be as simple as decrementing a counter. It turned out to be much more than that.&lt;/p&gt;

&lt;p&gt;What I implemented&lt;br&gt;
Plan-based credit allocation (Free &amp;amp; Pro ready)&lt;br&gt;
Automatic daily credit reset for free users&lt;br&gt;
Database-level credit deduction using PostgreSQL functions&lt;br&gt;
Credit validation before processing optimization requests&lt;br&gt;
Proper handling when users run out of credits&lt;br&gt;
Integrated everything with Next.js and Supabase&lt;br&gt;
What I learned&lt;/p&gt;

&lt;p&gt;Building a SaaS isn't just about AI models or UI. A lot of the complexity comes from business logic.&lt;/p&gt;

&lt;p&gt;While working on this feature, I learned more about:&lt;/p&gt;

&lt;p&gt;PostgreSQL Functions&lt;br&gt;
Triggers&lt;br&gt;
Foreign Keys&lt;br&gt;
Row Level Security (RLS)&lt;br&gt;
Supabase RPC&lt;br&gt;
Designing a scalable credit system&lt;/p&gt;

&lt;p&gt;It took several iterations and a lot of debugging, but seeing everything work together was worth it.&lt;/p&gt;

&lt;p&gt;Next up: payment integration, history improvements, and preparing for the beta launch.&lt;/p&gt;

&lt;p&gt;Building in public, one feature at a time. 🚀&lt;/p&gt;

&lt;h1&gt;
  
  
  buildinpublic #NextJS #Supabase #PostgreSQL #AI #SaaS #WebDevelopment
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>backend</category>
      <category>postgres</category>
      <category>saas</category>
    </item>
    <item>
      <title>How I Built a 25+ Page Agency Website with Next.js, TypeScript &amp; Material UI</title>
      <dc:creator>Sayyed Amaan Ali</dc:creator>
      <pubDate>Thu, 09 Jul 2026 06:44:22 +0000</pubDate>
      <link>https://dev.to/sayyed_amaanali_8633c4ce/how-i-built-a-25-page-agency-website-with-nextjs-typescript-material-ui-4764</link>
      <guid>https://dev.to/sayyed_amaanali_8633c4ce/how-i-built-a-25-page-agency-website-with-nextjs-typescript-material-ui-4764</guid>
      <description>&lt;p&gt;Recently, I completed a freelance project where I redesigned the website for Aetibar Information &amp;amp; Technologies.&lt;/p&gt;

&lt;p&gt;The goal was to build a modern, scalable, and SEO-friendly website that could handle a large amount of content while remaining fast and easy to maintain.&lt;/p&gt;

&lt;p&gt;Live Website: &lt;a href="https://www.aetibar.in" rel="noopener noreferrer"&gt;https://www.aetibar.in&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tech Stack&lt;br&gt;
Next.js&lt;br&gt;
TypeScript&lt;br&gt;
Material UI (MUI)&lt;br&gt;
Project Highlights&lt;br&gt;
25+ responsive pages&lt;br&gt;
240,000+ words of website content&lt;br&gt;
Dynamic blog with an admin panel for content management&lt;br&gt;
SEO-friendly architecture&lt;br&gt;
Responsive design across devices&lt;br&gt;
Optimized for performance and maintainability&lt;br&gt;
Challenges&lt;/p&gt;

&lt;p&gt;One of the biggest challenges was organizing a content-heavy website without sacrificing performance or maintainability. The project required building reusable components, keeping the UI consistent across dozens of pages, and ensuring the architecture would scale as more content is added.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;br&gt;
Designing reusable UI components saves significant development time.&lt;br&gt;
Planning the project structure early makes large websites much easier to maintain.&lt;br&gt;
Performance and SEO should be considered from the beginning, not added later.&lt;br&gt;
Building content-heavy applications requires balancing user experience with maintainable code.&lt;/p&gt;

&lt;p&gt;I'd love to hear your thoughts or suggestions for improvement. Feedback from the developer community is always appreciated.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>showdev</category>
      <category>typescript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Spent 5 Hours Debugging an AI Backend. I Didn't Ship a Feature, But It Was Worth It.</title>
      <dc:creator>Sayyed Amaan Ali</dc:creator>
      <pubDate>Sun, 05 Jul 2026 22:36:29 +0000</pubDate>
      <link>https://dev.to/sayyed_amaanali_8633c4ce/i-spent-5-hours-debugging-an-ai-backend-i-didnt-ship-a-feature-but-it-was-worth-it-18f7</link>
      <guid>https://dev.to/sayyed_amaanali_8633c4ce/i-spent-5-hours-debugging-an-ai-backend-i-didnt-ship-a-feature-but-it-was-worth-it-18f7</guid>
      <description>&lt;p&gt;Today started with a simple goal: finish a feature on an AI-based project I'm building.&lt;/p&gt;

&lt;p&gt;That didn't happen.&lt;/p&gt;

&lt;p&gt;Instead, I spent almost five hours debugging.&lt;/p&gt;

&lt;p&gt;At first, I was convinced the database was causing the problem. After fixing that, another issue appeared. Then I thought it was the queue. Then the AI API. Then the fetch logic.&lt;/p&gt;

&lt;p&gt;The interesting part wasn't the bugs—it was how I was approaching them.&lt;/p&gt;

&lt;p&gt;I stopped trying random fixes and started tracing the request from start to finish.&lt;/p&gt;

&lt;p&gt;Request&lt;br&gt;
   ↓&lt;br&gt;
Queue&lt;br&gt;
   ↓&lt;br&gt;
Worker&lt;br&gt;
   ↓&lt;br&gt;
AI Response&lt;br&gt;
   ↓&lt;br&gt;
Database&lt;br&gt;
   ↓&lt;br&gt;
UI&lt;/p&gt;

&lt;p&gt;At every step, I added logs and asked one question:&lt;/p&gt;

&lt;p&gt;"Did the data reach this point?"&lt;/p&gt;

&lt;p&gt;That one change completely changed how I debugged the project.&lt;/p&gt;

&lt;p&gt;Some of the issues I found:&lt;/p&gt;

&lt;p&gt;A database constraint that no longer matched the application's behavior.&lt;br&gt;
An insert operation that was actually successful, but I interpreted it as a failure because I misunderstood the response.&lt;br&gt;
A fetch query making assumptions that were no longer true after changing the database schema.&lt;br&gt;
AI API quota limits exposing weaknesses in my model selection strategy.&lt;/p&gt;

&lt;p&gt;The last one was probably the biggest lesson.&lt;/p&gt;

&lt;p&gt;I had implemented a simple round-robin scheduler for AI models. It worked... until multiple models started hitting their quota limits.&lt;/p&gt;

&lt;p&gt;The scheduler kept selecting models that were already exhausted.&lt;/p&gt;

&lt;p&gt;That made me realize that round-robin alone isn't enough.&lt;/p&gt;

&lt;p&gt;A production-ready scheduler also needs to know which models are healthy, which are cooling down, and which should be skipped temporarily.&lt;/p&gt;

&lt;p&gt;I didn't expect API limits to teach me something about system design, but they did.&lt;/p&gt;

&lt;p&gt;At the end of the day, I still hadn't shipped the feature I planned to.&lt;/p&gt;

&lt;p&gt;But I understand the system much better than I did this morning.&lt;/p&gt;

&lt;p&gt;Sometimes the most productive coding session isn't the one where you write the most code.&lt;/p&gt;

&lt;p&gt;It's the one where you finally understand why your existing code behaves the way it does.&lt;/p&gt;

&lt;p&gt;Have you ever spent hours debugging only to realize the actual problem was somewhere completely different from where you started?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>backend</category>
      <category>debugging</category>
      <category>devjournal</category>
    </item>
  </channel>
</rss>
