<?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: Frank Mendez</title>
    <description>The latest articles on Forem by Frank Mendez (@frankmendez).</description>
    <link>https://forem.com/frankmendez</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%2F851284%2F66782c4d-188c-4e01-8161-93796f702126.png</url>
      <title>Forem: Frank Mendez</title>
      <link>https://forem.com/frankmendez</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/frankmendez"/>
    <language>en</language>
    <item>
      <title>🚀 I Built a Full-Stack Blog CMS with Next.js + Supabase (And You Can Use It Today)</title>
      <dc:creator>Frank Mendez</dc:creator>
      <pubDate>Wed, 15 Apr 2026 09:20:09 +0000</pubDate>
      <link>https://forem.com/frankmendez/i-built-a-full-stack-blog-cms-with-nextjs-supabase-and-you-can-use-it-today-23bk</link>
      <guid>https://forem.com/frankmendez/i-built-a-full-stack-blog-cms-with-nextjs-supabase-and-you-can-use-it-today-23bk</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;
I built a production-ready blog CMS using modern tools like Next.js (App Router), Supabase, and Tailwind. It has auth, roles, drafts, an AI assistant, and a headless API. It’s open-source — and yes, you can try it right now 👇&lt;br&gt;
👉 Live: &lt;a href="https://blog.frankmendez.site/blog" rel="noopener noreferrer"&gt;https://blog.frankmendez.site/blog&lt;/a&gt;&lt;br&gt;
👉 Repo: &lt;a href="https://github.com/frank-mendez/nextjs-blog-cms" rel="noopener noreferrer"&gt;https://github.com/frank-mendez/nextjs-blog-cms&lt;/a&gt;&lt;br&gt;
👉 Register: &lt;a href="https://blog.frankmendez.site/register" rel="noopener noreferrer"&gt;https://blog.frankmendez.site/register&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🤔 Why I Built This
&lt;/h2&gt;

&lt;p&gt;Let’s be honest — most CMS platforms fall into two categories:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Too simple&lt;/strong&gt; → great for beginners, painful for devs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Too complex&lt;/strong&gt; → enterprise-level headache just to publish a blog post&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I wanted something in between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developer-friendly&lt;/li&gt;
&lt;li&gt;Production-ready&lt;/li&gt;
&lt;li&gt;Actually enjoyable to use&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also… I got tired of wiring the same auth + roles + editor setup over and over again. So I decided to build it once — properly.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What This CMS Can Do
&lt;/h2&gt;

&lt;p&gt;This isn’t just a “Hello World blog.” It’s a &lt;strong&gt;serious CMS&lt;/strong&gt; disguised as a clean UI.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔐 Authentication &amp;amp; Roles
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Supabase Auth out of the box&lt;/li&gt;
&lt;li&gt;Role-based access control (Admin / Author)&lt;/li&gt;
&lt;li&gt;Enforced using Row Level Security (RLS) — not just frontend checks (we don’t do fake security here)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ✍️ Writing Experience
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;WYSIWYG editor (because Markdown wars are over… mostly)&lt;/li&gt;
&lt;li&gt;Draft &amp;amp; publish workflow&lt;/li&gt;
&lt;li&gt;Clean writing interface without distractions&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🤖 AI Writing Assistant
&lt;/h3&gt;

&lt;p&gt;Yes, there’s AI. Because of course there is.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate content ideas&lt;/li&gt;
&lt;li&gt;Assist in writing posts&lt;/li&gt;
&lt;li&gt;Speed up your workflow when your brain says “nope”&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔌 Headless API
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;REST API ready to plug into anything&lt;/li&gt;
&lt;li&gt;Use it for mobile apps, dashboards, or your next side project&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ⚡ Developer Experience
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Built with &lt;strong&gt;Next.js App Router&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Styled with TailwindCSS + shadcn/ui&lt;/li&gt;
&lt;li&gt;Clean structure, easy to extend&lt;/li&gt;
&lt;li&gt;MCP-powered workflows (because we like things fast)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js (App Router)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Supabase (DB + Auth + RLS)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI:&lt;/strong&gt; TailwindCSS + shadcn/ui&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI:&lt;/strong&gt; OpenAI integration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; Vercel-ready&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically, if you’re a modern frontend dev — this stack will feel like home.&lt;/p&gt;




&lt;h2&gt;
  
  
  👀 Live Demo
&lt;/h2&gt;

&lt;p&gt;Don’t take my word for it — try it yourself:&lt;/p&gt;

&lt;p&gt;👉 Browse posts:&lt;br&gt;
&lt;a href="https://blog.frankmendez.site/blog" rel="noopener noreferrer"&gt;https://blog.frankmendez.site/blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 Create an account:&lt;br&gt;
&lt;a href="https://blog.frankmendez.site/register" rel="noopener noreferrer"&gt;https://blog.frankmendez.site/register&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yes, you can actually use it. No “coming soon” nonsense.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Why You Might Find This Useful
&lt;/h2&gt;

&lt;p&gt;This project is perfect if you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Want a &lt;strong&gt;starter CMS&lt;/strong&gt; without reinventing auth + roles&lt;/li&gt;
&lt;li&gt;Are learning &lt;strong&gt;Next.js + Supabase in a real-world setup&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Need a &lt;strong&gt;headless blog backend&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Want to study &lt;strong&gt;RLS done right&lt;/strong&gt; (seriously, this part matters)&lt;/li&gt;
&lt;li&gt;Just like exploring clean, modern full-stack apps&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📦 Open Source (And Why I Need Your Help)
&lt;/h2&gt;

&lt;p&gt;Here’s the thing — open source only works if people actually… use it 😅&lt;/p&gt;

&lt;p&gt;If you find this useful:&lt;/p&gt;

&lt;p&gt;⭐ Star the repo → &lt;a href="https://github.com/frank-mendez/nextjs-blog-cms" rel="noopener noreferrer"&gt;https://github.com/frank-mendez/nextjs-blog-cms&lt;/a&gt;&lt;br&gt;
🍴 Fork it and build your own version&lt;br&gt;
🐛 Open issues / suggest improvements&lt;br&gt;
🚀 Share it with other devs&lt;/p&gt;

&lt;p&gt;Every star helps push this project further (and tells me I’m not coding into the void).&lt;/p&gt;




&lt;h2&gt;
  
  
  🧭 What’s Next
&lt;/h2&gt;

&lt;p&gt;I’m planning to add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Comments system&lt;/li&gt;
&lt;li&gt;Better SEO tooling&lt;/li&gt;
&lt;li&gt;More AI features (without turning it into Skynet)&lt;/li&gt;
&lt;li&gt;Plugin system (maybe 👀)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧵 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This project started as “I just need a blog CMS…”&lt;/p&gt;

&lt;p&gt;…and turned into a full-blown platform.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;“There has to be a better way to build this stack…”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yeah — same. This is my attempt at that.&lt;/p&gt;




&lt;p&gt;If you try it out, I’d love to hear your feedback.&lt;br&gt;
If it breaks… well, congratulations, you found a feature.&lt;/p&gt;

&lt;p&gt;Happy building 👨‍💻&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>opensource</category>
      <category>showdev</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
