<?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: aamirali51</title>
    <description>The latest articles on Forem by aamirali51 (@aamirali51).</description>
    <link>https://forem.com/aamirali51</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%2F3683060%2F9e9dc47c-b9d6-491d-9335-e8a48ae16d4e.png</url>
      <title>Forem: aamirali51</title>
      <link>https://forem.com/aamirali51</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/aamirali51"/>
    <language>en</language>
    <item>
      <title>I Got Roasted on Reddit for My AI-Built CMS So I Built a Full PHP Framework Instead</title>
      <dc:creator>aamirali51</dc:creator>
      <pubDate>Sun, 28 Dec 2025 18:16:58 +0000</pubDate>
      <link>https://forem.com/aamirali51/i-got-roasted-on-reddit-for-my-ai-built-cms-so-i-built-a-full-php-framework-instead-14j5</link>
      <guid>https://forem.com/aamirali51/i-got-roasted-on-reddit-for-my-ai-built-cms-so-i-built-a-full-php-framework-instead-14j5</guid>
      <description>&lt;h2&gt;
  
  
  Hey DEV community 👋
&lt;/h2&gt;

&lt;p&gt;My name is Aamir, English isn’t my first language, and I’m not a PHP expert. In fact, I know jack shit about PHP.&lt;/p&gt;

&lt;p&gt;A few weeks ago, I posted my homemade CMS (Zed) on r/PHP. I used AI to help write the code and even to clean up my Reddit replies (because writing perfect English is hard when it’s not your native tongue).&lt;/p&gt;

&lt;h3&gt;
  
  
  The response? &lt;strong&gt;Nuclear.&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;“AI slop”&lt;/li&gt;
&lt;li&gt;“Vibe-coded garbage”&lt;/li&gt;
&lt;li&gt;“No tests, no structure”&lt;/li&gt;
&lt;li&gt;Someone literally asked the mods to ban “AI vibe-coding” posts&lt;/li&gt;
&lt;li&gt;Got flamed for using AI to reply — yes, really&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I felt like an outsider crashing the “real developers only” club. I deleted the post. Logged off. Thought maybe they were right.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Then I got stubborn.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of giving up, I took their “feedback” (tests? structure? real features?), used even more AI, and built something bigger.&lt;/p&gt;




&lt;h2&gt;
  
  
  Meet Intent Framework v0.3.0
&lt;/h2&gt;

&lt;p&gt;A zero-boilerplate, explicitly designed, AI-native PHP micro-framework — now powering my next (much better) CMS.&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s inside:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Immutable &lt;code&gt;Request&lt;/code&gt;, fluent &lt;code&gt;Response&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Middleware + pipeline&lt;/li&gt;
&lt;li&gt;Sessions + flash messages&lt;/li&gt;
&lt;li&gt;Full authentication (&lt;code&gt;bcrypt&lt;/code&gt;, login, logout)&lt;/li&gt;
&lt;li&gt;Event dispatcher&lt;/li&gt;
&lt;li&gt;File-based cache with &lt;code&gt;Cache::remember()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Powerful validator&lt;/li&gt;
&lt;li&gt;Secure file-based API routes (outside &lt;code&gt;public/&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Built-in CLI: &lt;code&gt;php intent serve&lt;/code&gt;, &lt;code&gt;make:handler&lt;/code&gt;, &lt;code&gt;make:middleware&lt;/code&gt;, &lt;code&gt;cache:clear&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;CSRF protection middleware&lt;/li&gt;
&lt;li&gt;Route groups with prefix + middleware&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Stats:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;~3,000 lines of core code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;69 tests, 124 assertions&lt;/strong&gt; (nice)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PHPStan Level 8&lt;/strong&gt; passing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mutation testing score:&lt;/strong&gt; 85%+&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📂 &lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/aamirali51/Intent-Framework" rel="noopener noreferrer"&gt;Intent-Framework&lt;/a&gt;&lt;br&gt;
📄 &lt;strong&gt;Full docs:&lt;/strong&gt; &lt;code&gt;ARCHITECTURE.md&lt;/code&gt; (worth a read)&lt;/p&gt;




&lt;h3&gt;
  
  
  The Reality
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Yes&lt;/strong&gt; — I still used AI for most of it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yes&lt;/strong&gt; — It took less than a weekend of real work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yes&lt;/strong&gt; — I still don’t know what half the PHP internals do.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it works. It’s clean. It’s tested. It’s fast. And honestly? It feels more predictable than a lot of “hand-written” code I’ve seen.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Point
&lt;/h2&gt;

&lt;p&gt;I’m not saying AI replaces developers. I’m saying tools like Claude and Grok are incredible pair programmers — especially for people like me who aren’t native English speakers or PHP gurus.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The gatekeeping on some forums (“real devs don’t use AI”) is wild. We all copy from Stack Overflow. We all use Copilot when stuck. I’m just honest about it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI didn’t make me lazy. It let me build faster, learn faster, and ship something real.&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s Next?
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; Finishing the new CMS on top of Intent&lt;/li&gt;
&lt;li&gt; Starting an ecosystem of packages (&lt;code&gt;intent/seo&lt;/code&gt;, &lt;code&gt;intent/comments&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;li&gt; Maybe... a live demo soon?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're curious, check out the repo.&lt;br&gt;
Star it if you like it.&lt;br&gt;
Fork it if you want to improve it.&lt;br&gt;
Or just laugh — I don’t mind anymore.&lt;/p&gt;

&lt;p&gt;Thanks for reading my comeback story. And thanks to the roasters — you motivated me more than you know.&lt;/p&gt;

&lt;p&gt;Now shipping &amp;gt; gatekeeping. 🔥&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>showdev</category>
      <category>framework</category>
    </item>
  </channel>
</rss>
