<?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: BuildWithTall</title>
    <description>The latest articles on DEV Community by BuildWithTall (@tallcms).</description>
    <link>https://dev.to/tallcms</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%2F3861098%2F1ace6125-3967-465d-bf2c-2d548ea30d28.jpeg</url>
      <title>DEV Community: BuildWithTall</title>
      <link>https://dev.to/tallcms</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tallcms"/>
    <language>en</language>
    <item>
      <title>Why I Built My Own CMS (Again) — This Time with Laravel + Filament</title>
      <dc:creator>BuildWithTall</dc:creator>
      <pubDate>Sat, 04 Apr 2026 14:35:53 +0000</pubDate>
      <link>https://dev.to/tallcms/why-i-built-my-own-cms-again-this-time-with-laravel-filament-2422</link>
      <guid>https://dev.to/tallcms/why-i-built-my-own-cms-again-this-time-with-laravel-filament-2422</guid>
      <description>&lt;p&gt;Most developers don’t wake up thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“You know what the world needs? Another CMS.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And yet… here we are.&lt;/p&gt;

&lt;p&gt;The Problem with Existing CMS (From a Developer’s POV)&lt;/p&gt;

&lt;p&gt;I’ve worked with a lot of CMS platforms over the years — from WordPress to headless setups.&lt;/p&gt;

&lt;p&gt;They all work… until you try to do something slightly different.&lt;/p&gt;

&lt;p&gt;That’s when things get messy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You fight plugins instead of building features&lt;/li&gt;
&lt;li&gt;You bend your architecture around the CMS&lt;/li&gt;
&lt;li&gt;You inherit years of legacy decisions you didn’t sign up for&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At some point, I realized:&lt;/p&gt;

&lt;p&gt;I wasn’t building products — I was working around the CMS.&lt;/p&gt;

&lt;p&gt;The “What If” Question&lt;/p&gt;

&lt;p&gt;So I started asking:&lt;/p&gt;

&lt;p&gt;What if a CMS was built the way we build modern Laravel apps today?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not constrained by legacy.&lt;/li&gt;
&lt;li&gt;Not pretending to be everything for everyone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clean architecture&lt;/li&gt;
&lt;li&gt;Developer-first&lt;/li&gt;
&lt;li&gt;Extensible by design&lt;/li&gt;
&lt;li&gt;Actually enjoyable to work with&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why &lt;strong&gt;Laravel&lt;/strong&gt; + &lt;strong&gt;Filament&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;If you’re in the Laravel ecosystem, this part will make sense.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Laravel&lt;/strong&gt; gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structure without being restrictive&lt;/li&gt;
&lt;li&gt;A clean service layer&lt;/li&gt;
&lt;li&gt;First-class DX&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Filament&lt;/strong&gt; gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A powerful admin panel out of the box&lt;/li&gt;
&lt;li&gt;Forms, tables, actions — already solved&lt;/li&gt;
&lt;li&gt;A consistent UI layer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, they solve 80% of what a CMS needs.&lt;/p&gt;

&lt;p&gt;The remaining 20%?&lt;br&gt;
That’s where things get interesting.&lt;/p&gt;

&lt;p&gt;The Hard Parts (That No One Talks About)&lt;/p&gt;

&lt;p&gt;Building a CMS isn’t about CRUD.&lt;/p&gt;

&lt;p&gt;It’s about abstractions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Content as Blocks (Not Fields)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What I wanted:&lt;/p&gt;

&lt;p&gt;Flexible, composable content blocks&lt;/p&gt;

&lt;p&gt;But that introduces problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How do you store them?&lt;/li&gt;
&lt;li&gt;How do you version them?&lt;/li&gt;
&lt;li&gt;How do you render them cleanly?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Editor Experience vs Developer Control&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There’s always tension between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Giving non-tech users flexibility&lt;/li&gt;
&lt;li&gt;Keeping developers sane&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Too flexible → chaos&lt;br&gt;
Too strict → unusable&lt;/p&gt;

&lt;p&gt;Finding that balance is harder than it sounds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Plugin Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I didn’t want:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Just hack it into the codebase”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wanted:&lt;/p&gt;

&lt;p&gt;A system where features can be dropped in cleanly&lt;/p&gt;

&lt;p&gt;Which means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discovery&lt;/li&gt;
&lt;li&gt;Registration&lt;/li&gt;
&lt;li&gt;Isolation&lt;/li&gt;
&lt;li&gt;Extensibility points&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I ended up building TallCMS, an open-source CMS powered by Laravel + Filament.&lt;/p&gt;

&lt;p&gt;Current features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Block-based page builder&lt;/li&gt;
&lt;li&gt;Pages &amp;amp; posts&lt;/li&gt;
&lt;li&gt;Publishing workflow (draft → scheduled → published)&lt;/li&gt;
&lt;li&gt;Revision history&lt;/li&gt;
&lt;li&gt;Media library&lt;/li&gt;
&lt;li&gt;Menu builder&lt;/li&gt;
&lt;li&gt;Plugin architecture &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Still early. Still evolving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unexpected Lessons&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Frameworks Matter More Than You Think&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Working within Laravel + Filament constraints actually made things better.&lt;/p&gt;

&lt;p&gt;It forced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Consistency&lt;/li&gt;
&lt;li&gt;Reusability&lt;/li&gt;
&lt;li&gt;Less over-engineering&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Agentic Coding Is Powerful… But Dangerous&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ve been experimenting with AI-assisted development.&lt;/p&gt;

&lt;p&gt;What I learned:&lt;/p&gt;

&lt;p&gt;Without structure → chaos&lt;br&gt;
With a clear plan → massive acceleration&lt;/p&gt;

&lt;p&gt;I now always:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1. Generate a plan&lt;/li&gt;
&lt;li&gt;2. Review it&lt;/li&gt;
&lt;li&gt;3. Execute in controlled steps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. CMS Is a Systems Problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Build pages”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Design a system that lets others build anything”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That shift changes everything.&lt;/p&gt;

&lt;p&gt;Where This Is Going&lt;/p&gt;

&lt;p&gt;I’m still exploring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better block composition&lt;/li&gt;
&lt;li&gt;AI-assisted content creation&lt;/li&gt;
&lt;li&gt;Multi-site architecture&lt;/li&gt;
&lt;li&gt;Developer experience improvements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Curious What Others Think&lt;/p&gt;

&lt;p&gt;If you’ve ever:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built your own CMS&lt;/li&gt;
&lt;li&gt;Fought with one&lt;/li&gt;
&lt;li&gt;Or are happily using one&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d love to hear:&lt;/p&gt;

&lt;p&gt;What’s the one thing your CMS does really well — or really badly?&lt;/p&gt;

&lt;p&gt;Closing&lt;/p&gt;

&lt;p&gt;I’m building this as an open-source project called TallCMS.&lt;/p&gt;

&lt;p&gt;Not trying to replace everything.&lt;/p&gt;

&lt;p&gt;Just trying to make something that feels right for modern Laravel developers.&lt;/p&gt;

&lt;p&gt;If you’re curious, happy to share more.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>filament</category>
      <category>claude</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
