<?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: NextBlock</title>
    <description>The latest articles on DEV Community by NextBlock (@nextblockcms).</description>
    <link>https://dev.to/nextblockcms</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%2F3247636%2F3d6c7b06-15b7-4a8b-ba49-faae566c6228.jpg</url>
      <title>DEV Community: NextBlock</title>
      <link>https://dev.to/nextblockcms</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nextblockcms"/>
    <language>en</language>
    <item>
      <title>Why We Chose JSONB for AI: How NextBlock CMS Bypassed the "HTML Wall" for Next.js 16</title>
      <dc:creator>NextBlock</dc:creator>
      <pubDate>Fri, 01 May 2026 16:27:59 +0000</pubDate>
      <link>https://dev.to/nextblockcms/why-we-chose-jsonb-for-ai-how-nextblock-cms-bypassed-the-html-wall-for-nextjs-16-41go</link>
      <guid>https://dev.to/nextblockcms/why-we-chose-jsonb-for-ai-how-nextblock-cms-bypassed-the-html-wall-for-nextjs-16-41go</guid>
      <description>&lt;p&gt;If you’ve ever tried to pipe Generative AI directly into a production-grade CMS, you’ve likely hit the "HTML Wall."&lt;/p&gt;

&lt;p&gt;Traditional rich-text editors treat documents as unstructured strings. When you ask an LLM to generate a blog post, it usually hands back a blob of HTML. In a modern Next.js 16 environment, that blob is a performance ticking time bomb. You have to sanitize it, parse it, and hope it doesn't break your React Server Components (RSC) or trigger a massive re-render that tanks your Core Web Vitals.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv4nwh7oecdvyv92jvkjv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv4nwh7oecdvyv92jvkjv.png" alt=" " width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When we built NextBlock Cortex, we made a fundamental engineering decision: AI never touches raw HTML. We store everything as strict, node-based JSONB.&lt;/p&gt;

&lt;p&gt;Here is why that decision is the backbone of our performance.&lt;/p&gt;

&lt;p&gt;The Problem: The "Sanitization Tax"&lt;br&gt;
The "Old Way" of handling AI content looks like this:&lt;/p&gt;

&lt;p&gt;AI generates a string of HTML.&lt;/p&gt;

&lt;p&gt;Server receives the string and runs it through a heavy sanitizer like DOMPurify to prevent XSS.&lt;/p&gt;

&lt;p&gt;Database stores the string.&lt;/p&gt;

&lt;p&gt;Client fetches the string and has to parse it again to render it within a React tree.&lt;/p&gt;

&lt;p&gt;Every step in this process adds latency. Worse, if the AI generates an unsupported tag or a broken &lt;/p&gt;, your editor engine (like Tiptap or ProseMirror) will aggressively strip it out, leading to data loss and a disjointed user experience.

&lt;p&gt;The NextBlock Solution: The Zero-Validation Pipeline&lt;br&gt;
In NextBlock, we treat AI as a structured data constructor, not a writer. We use constrained decoding to force the LLM to output content that follows a strict Zod-backed JSON schema.&lt;/p&gt;

&lt;p&gt;By doing this, we create what we call the Zero-Validation Pipeline:&lt;/p&gt;

&lt;p&gt;Direct-to-DB: Because the AI's output is algorithmically guaranteed to be valid JSON that matches our database schema, we skip the parsing and cleaning phase entirely.&lt;/p&gt;

&lt;p&gt;Atomic Transactions: The JSONB payload is inserted directly into the PostgreSQL column. If a token doesn't fit the schema, the inference fails before it ever touches our disk.&lt;/p&gt;

&lt;p&gt;The Code: Mapping the Schema&lt;br&gt;
By defining our content as a tree of nodes rather than a string, we ensure 1:1 compatibility between the AI, the DB, and the Editor.&lt;/p&gt;

&lt;p&gt;TypeScript&lt;br&gt;
// A simplified look at our content schema&lt;br&gt;
const NextBlockNodeSchema = z.object({&lt;br&gt;
  type: z.enum(['heading', 'paragraph', 'image', 'codeBlock']),&lt;br&gt;
  attrs: z.record(z.any()).optional(),&lt;br&gt;
  content: z.array(z.lazy(() =&amp;gt; NextBlockNodeSchema)).optional(),&lt;br&gt;
  text: z.string().optional(),&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;type ContentBlock = z.infer;&lt;br&gt;
Why Next.js 16 Loves JSONB&lt;br&gt;
The move to JSONB wasn't just about data integrity; it was a pure performance play for the Next.js 16 ecosystem:&lt;/p&gt;

&lt;p&gt;Native RSC Rendering: Since the content is already a JSON object, we map it directly to React components. No dangerouslySetInnerHTML, no hydration mismatches, and no intermediate parsing overhead.&lt;/p&gt;

&lt;p&gt;Turbopack &amp;amp; use cache: Standardized JSON allows for highly predictable caching. Using the new Next.js 16 use cache directive, we can cache AI-generated blocks at the edge with surgical precision.&lt;/p&gt;

&lt;p&gt;Perfect Lighthouse Scores: By eliminating the "sanitization tax" and parsing lag, NextBlock maintains its 100/100 performance guarantee, even on pages heavily populated by AI-generated modules.&lt;/p&gt;

&lt;p&gt;Conclusion: The Schema is the Product&lt;br&gt;
In the era of AI-native applications, "the schema is the product." By moving away from legacy HTML and embracing strict JSONB, we’ve ensured that NextBlock isn't just faster—it’s smarter. Our data is readable by humans, renderable by React, and queryable by future AI agents without the mess of regex or tag-stripping.&lt;/p&gt;

&lt;p&gt;NextBlock is currently in early access. If you're tired of "Frankenstein" WordPress architectures and want a CMS built for the 2026 tech stack, &lt;a href="https://github.com/nextblock-cms/nextblock" rel="noopener noreferrer"&gt;check us out on GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>ai</category>
      <category>postgres</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Finally, a Modern CMS for Developers: Introducing NextBlock (Open Source)</title>
      <dc:creator>NextBlock</dc:creator>
      <pubDate>Mon, 26 Jan 2026 20:51:07 +0000</pubDate>
      <link>https://dev.to/nextblockcms/finally-a-modern-cms-for-developers-introducing-nextblock-open-source-336</link>
      <guid>https://dev.to/nextblockcms/finally-a-modern-cms-for-developers-introducing-nextblock-open-source-336</guid>
      <description>&lt;h2&gt;
  
  
  How we are breaking the cycle of bloated legacy platforms and complex headless configs with Next.js 16 and Supabase.
&lt;/h2&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/WUNLtZWZGL8"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;Every web developer knows the pain of choosing a Content Management System (CMS). It often feels like you are stuck between a rock and a hard place.&lt;/p&gt;

&lt;p&gt;On one side, you have the “old guard” (like WordPress). It’s familiar, sure. But it is often bloated, slow, and — thanks to a reliance on endless plugins — a potential security minefield. On the other side, you have modern headless systems. They offer raw speed, but they can be a headache to set up, a nightmare for content editors to use, and often bury you in configuration files.&lt;/p&gt;

&lt;h4&gt;
  
  
  We decided to break that cycle.
&lt;/h4&gt;

&lt;p&gt;Enter NextBlock, an open-source, developer-first CMS built to be the refreshing alternative we’ve been waiting for. In this article, I’m going to break down exactly what we’ve built so far, our tech stack, and our vision for a sustainable open-source ecosystem.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Tech Stack
&lt;/h3&gt;

&lt;p&gt;At its core, NextBlock is built on a modern foundation designed for the future of the web:&lt;/p&gt;

&lt;p&gt;• Frontend: Next.js 16 for blazing-fast performance and Server Components.&lt;/p&gt;

&lt;p&gt;• Backend: Supabase for handling data, auth, and storage.&lt;/p&gt;

&lt;p&gt;• Styling: Tailwind CSS for a lean, utility-first design system.&lt;/p&gt;

&lt;p&gt;But the tech is just the vehicle. The mission of NextBlock boils down to three core pillars: Speed, Experience, and Extensibility.&lt;/p&gt;

&lt;p&gt;Pillar 1: Built for Speed&lt;/p&gt;

&lt;p&gt;When we say “built for speed,” we aren’t talking about vague marketing promises. We are talking about concrete engineering wins that are baked into the core platform.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Edge Caching &amp;amp; ISR: We’ve set up caching at the edge, utilizing Next.js Incremental Static Regeneration (ISR). This ensures your site feels instantaneous regardless of where your users are located.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Critical Code Loading: We are obsessive about shipping only the code that is absolutely necessary. This includes using Tailwind CSS to purge unused styles, making the final production build incredibly lean.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next-Gen Image Optimization: Images are usually the #1 culprit for slow websites. NextBlock solves this by baking in the Next.js  component, enabling modern formats like AVIF (which are significantly smaller than JPEGs), and using blur-up placeholders so pages feel snappy even while assets load.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Pillar 2: A Superior Experience (For Everyone)
&lt;/h3&gt;

&lt;p&gt;Speed matters, but what is the point of a fast site if it is a pain to manage? We focused heavily on the experience for both the Content Creator and the Developer.&lt;/p&gt;

&lt;p&gt;For the Content Creator: We wanted an editing experience that feels modern — not like a form from 2005.&lt;/p&gt;

&lt;p&gt;• Notion-Style Editor: We upgraded the block editor (powered by Tiptap) to be intuitive and drag-and-drop friendly.&lt;/p&gt;

&lt;p&gt;• Organized Media: No more chaotic file dumps. The media library supports folders and tagging.&lt;/p&gt;

&lt;p&gt;• Revision History: We added one-click revision history, a game-changer for content teams who need safety when editing live pages.&lt;/p&gt;

&lt;p&gt;For the Developer: We moved the project structure into an Nx Monorepo. This makes it significantly easier to manage dependencies and scale the codebase as you add new features. We also built a CLI tool (create-nextblock) that spins up a new project in seconds, and a documented Block SDK that allows you to build custom components—unlocking the real power of the platform.&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s Next: Phase 3 and the “Open Core” Model
&lt;/h3&gt;

&lt;p&gt;We have built a fast, user-friendly foundation. Now, we are moving into Phase 3, where the vision expands from “just a tool” to a full ecosystem.&lt;/p&gt;

&lt;p&gt;The focus right now is the development of a Premium E-commerce Module. This will be a full-blown commerce solution built to plug directly into NextBlock.&lt;/p&gt;

&lt;p&gt;“Wait, premium? I thought this was Open Source?” This is a critical part of our vision for sustainability. We are adopting an Open Core model:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The Core CMS: Always free, always open-source (AGPL license). This is the foundation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Premium Modules: High-value, complex features (like E-commerce or Enterprise SSO) will be offered as paid add-ons.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Marketplace: This fuels a future community marketplace where developers can share and sell their own blocks and themes.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Join the Ecosystem
&lt;/h2&gt;

&lt;p&gt;As we say on our site: “More than a CMS, an ecosystem”. The goal isn’t just to ship code; it’s to build a platform where we can create amazing web experiences together.&lt;/p&gt;

&lt;p&gt;NextBlock is being built in the open. If the idea of a faster, better, developer-first CMS sounds exciting to you, we want you involved.&lt;/p&gt;

&lt;p&gt;• Star the Repo: [&lt;a href="https://github.com/nextblock-cms/nextblock" rel="noopener noreferrer"&gt;https://github.com/nextblock-cms/nextblock&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;• Join the Community: [&lt;a href="https://github.com/nextblock-cms/nextblock/discussions" rel="noopener noreferrer"&gt;https://github.com/nextblock-cms/nextblock/discussions&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;The question isn’t just what’s next for the web — it’s whether you are ready to help build it.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>react</category>
      <category>cms</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Architecting Open-Core: How We Use Nx to Split Free vs. Premium Code</title>
      <dc:creator>NextBlock</dc:creator>
      <pubDate>Mon, 19 Jan 2026 14:19:00 +0000</pubDate>
      <link>https://dev.to/nextblockcms/architecting-open-core-how-we-use-nx-to-split-free-vs-premium-code-1epg</link>
      <guid>https://dev.to/nextblockcms/architecting-open-core-how-we-use-nx-to-split-free-vs-premium-code-1epg</guid>
      <description>&lt;p&gt;The "WordPress Killer" needs a business model. When building NextBlock CMS, I knew I wanted the core to be free and open-source forever. But I also plan to offer premium capabilities—starting with our upcoming E-commerce library—to sustain the project. This presents a technical challenge: How do you manage open-source code and closed-source premium modules in the same ecosystem?&lt;/p&gt;

&lt;p&gt;The Nx Solution This is why we spent Phase 2 migrating to an Nx Monorepo. It allows us to keep distinct boundaries between our core libraries and our future premium libraries.&lt;/p&gt;

&lt;p&gt;The "Empty Package" Strategy We are taking a unique approach to distribution.&lt;/p&gt;

&lt;p&gt;NPM Placeholders: We will publish "empty" or "shell" packages to the public NPM registry for our premium libraries. This reserves the namespace and prevents confusion.&lt;/p&gt;

&lt;p&gt;Private Registry via GitHub: The actual source code for the Premium E-commerce library will live in a private GitHub repository.&lt;/p&gt;

&lt;p&gt;The Handshake: Once a user purchases a license, they are invited to the private repo. Their package.json will point to the private instance, seamlessly pulling the premium code into their monorepo workflow.&lt;/p&gt;

&lt;p&gt;Why this matters This setup ensures that we can maintain a single, cohesive developer experience. You don't have to hack together two different CMS versions. You simply "unlock" the premium libs when you're ready.&lt;/p&gt;

&lt;p&gt;Phase 3 is all about executing this vision. The E-commerce library is coming, and it’s going to be fast.&lt;/p&gt;

</description>
      <category>monorepo</category>
      <category>nextjs</category>
      <category>webdev</category>
      <category>ecommerce</category>
    </item>
    <item>
      <title>NextBlock CMS: The Great Migration &amp; The Road to E-commerce (Phase 3)</title>
      <dc:creator>NextBlock</dc:creator>
      <pubDate>Wed, 14 Jan 2026 20:16:04 +0000</pubDate>
      <link>https://dev.to/nextblockcms/nextblock-cms-the-great-migration-the-road-to-e-commerce-phase-3-3c39</link>
      <guid>https://dev.to/nextblockcms/nextblock-cms-the-great-migration-the-road-to-e-commerce-phase-3-3c39</guid>
      <description>&lt;p&gt;I’m Back. It’s been quiet on the social front since New Year's, but the code commits have been loud. I am thrilled to announce that we have officially completed the groundwork for NextBlock CMS. Phase 1 (Performance) and Phase 2 (Architecture) are done.&lt;/p&gt;

&lt;p&gt;We Moved! First things first: update your remotes. The project has been transferred to its permanent home: &lt;a href="https://github.com/nextblock-cms/nextblock" rel="noopener noreferrer"&gt;https://github.com/nextblock-cms/nextblock&lt;/a&gt;. Unfortunately, we lost our old discussions in the move, so I’ve created 6 new discussion types (Announcements, Ideas, Q&amp;amp;A, etc.). I invite you all to jump back in and repopulate the board!&lt;/p&gt;

&lt;p&gt;Why the Silence? The Monorepo Split. We didn't just move files; we completely restructured the application using Nx. We successfully split the codebase into apps (the core CMS) and libs (reusable packages). This was a massive undertaking, but it was necessary for what comes next.&lt;/p&gt;

&lt;p&gt;Phase 3: The E-commerce Library We are now entering Phase 3. Our goal is ambitious: to create the best-performing E-commerce library in the world. We are targeting big corporations and solving the performance bottlenecks that have plagued standard CMS e-commerce plugins for years.&lt;/p&gt;

&lt;p&gt;The foundation is set. The repo is ready. Let’s build.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>discuss</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>NextBlock 2026: The Year of the Ecosystem (Phase 3 Roadmap)</title>
      <dc:creator>NextBlock</dc:creator>
      <pubDate>Thu, 01 Jan 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/nextblockcms/nextblock-2026-the-year-of-the-ecosystem-phase-3-roadmap-mid</link>
      <guid>https://dev.to/nextblockcms/nextblock-2026-the-year-of-the-ecosystem-phase-3-roadmap-mid</guid>
      <description>&lt;p&gt;&lt;em&gt;Moving from "Building a CMS" to "Building a Community".&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Happy New Year! 🎆&lt;/p&gt;

&lt;p&gt;2025 was the year of the Core. We built a Type-Safe, Next.js 15 powered, Supabase-backed CMS that smokes WordPress in performance benchmarks (100/100 Lighthouse).&lt;/p&gt;

&lt;p&gt;2026 is the year of the Ecosystem.&lt;/p&gt;

&lt;p&gt;We are entering Phase 3 of our roadmap. Here is what we are building this year:&lt;/p&gt;

&lt;p&gt;🛍️ The E-commerce Module: A lightweight, headless commerce engine. No bloat, just products and checkout.&lt;/p&gt;

&lt;p&gt;🧩 The Marketplace: A space for developers to share (and eventually sell) their custom Blocks and Themes.&lt;/p&gt;

&lt;p&gt;🤝 Community: We are moving development discussions to the open.&lt;/p&gt;

&lt;p&gt;This is an open-source project. No venture capital, no walled gardens. Just developers building the tools we actually want to use.&lt;/p&gt;

&lt;p&gt;If you're tired of fighting with legacy PHP platforms, come help us build the future.&lt;/p&gt;

&lt;p&gt;Star the repo to follow the journey: &lt;a href="https://github.com/Webman-Dev/nextblock-monorepo" rel="noopener noreferrer"&gt;https://github.com/Webman-Dev/nextblock-monorepo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgotxn9ux899tsfr7bz9z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgotxn9ux899tsfr7bz9z.png" alt=" " width="800" height="812"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>community</category>
      <category>typescript</category>
      <category>nextjs</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Documentation is a Feature: Why I’m Obsessing Over "Time-to-Hello-World"</title>
      <dc:creator>NextBlock</dc:creator>
      <pubDate>Sun, 28 Dec 2025 14:00:00 +0000</pubDate>
      <link>https://dev.to/nextblockcms/documentation-is-a-feature-why-im-obsessing-over-time-to-hello-world-26h8</link>
      <guid>https://dev.to/nextblockcms/documentation-is-a-feature-why-im-obsessing-over-time-to-hello-world-26h8</guid>
      <description>&lt;p&gt;&lt;em&gt;Great code with bad docs is just legacy code waiting to happen.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We just finished the "Holiday Sprint" for NextBlock, hitting 100% Lighthouse scores and shipping a robust Plugin SDK. But the code is only half the battle.&lt;/p&gt;

&lt;p&gt;I’m spending the days between Christmas and New Year's doing the unglamorous work: Writing Docs. ✍️&lt;/p&gt;

&lt;p&gt;My Goal for Jan 1st: A developer should be able to run npx create-nextblock-app and have a running, deployed CMS in under 5 minutes.&lt;/p&gt;

&lt;p&gt;If you have to read a 10-page manual to start a server, I’ve failed.&lt;/p&gt;

&lt;p&gt;I’m looking for beta testers to try the installation flow next week. If it takes you longer than 5 minutes, I want to hear about it.&lt;/p&gt;

&lt;p&gt;Who is up for the challenge?&lt;/p&gt;

&lt;p&gt;The read me in the repo: &lt;a href="https://github.com/Webman-Dev/nextblock-monorepo" rel="noopener noreferrer"&gt;https://github.com/Webman-Dev/nextblock-monorepo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyetarklo7hxhftqtw148.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyetarklo7hxhftqtw148.png" alt=" " width="800" height="812"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>documentation</category>
      <category>nextjs</category>
      <category>cms</category>
    </item>
    <item>
      <title>Building Git-like Version Control for a Headless CMS (Next.js + Supabase)</title>
      <dc:creator>NextBlock</dc:creator>
      <pubDate>Tue, 23 Dec 2025 14:44:50 +0000</pubDate>
      <link>https://dev.to/nextblockcms/building-git-like-version-control-for-a-headless-cms-nextjs-supabase-3gdg</link>
      <guid>https://dev.to/nextblockcms/building-git-like-version-control-for-a-headless-cms-nextjs-supabase-3gdg</guid>
      <description>&lt;p&gt;How we implemented “Time Travel” for content editors without exploding our database.&lt;/p&gt;

&lt;p&gt;I just merged one of the most requested features for NextBlock: Content Revision History.&lt;/p&gt;

&lt;p&gt;We all know the pain of a client deleting a paragraph and then asking, “Can we get that back?” 😅&lt;/p&gt;

&lt;p&gt;The Challenge: Most CMS solutions either don’t track history or bloat the database by duplicating entire rows for every save. We wanted something faster and smarter.&lt;/p&gt;

&lt;p&gt;The Stack:&lt;/p&gt;

&lt;p&gt;Next.js 15: For the reactive admin UI.&lt;br&gt;
Supabase (PostgreSQL): Storing JSONB deltas.&lt;br&gt;
Zod: Validating the schema integrity of past versions (so restoring an old version doesn’t break the new UI).&lt;br&gt;
How it works: We are diffing the JSON content blocks and storing snapshots only when significant changes are detected. This keeps our storage footprint low while giving editors the confidence to “Save” without fear.&lt;/p&gt;

&lt;p&gt;It’s live in the repo now. Go break it and let me know what you think! 👇&lt;br&gt;
&lt;a href="https://github.com/Webman-Dev/nextblock-monorepo" rel="noopener noreferrer"&gt;https://github.com/Webman-Dev/nextblock-monorepo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sneak peak here: &lt;a href="https://x.com/NextBlockCMS/status/2003474634340290704?s=20" rel="noopener noreferrer"&gt;https://x.com/NextBlockCMS/status/2003474634340290704?s=20&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcfqyajrm2azv67pswfj5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcfqyajrm2azv67pswfj5.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>nextjs</category>
      <category>postgres</category>
    </item>
    <item>
      <title>Designing a Type-Safe Plugin System for Next.js: Why Zod is Our Secret Weapon</title>
      <dc:creator>NextBlock</dc:creator>
      <pubDate>Mon, 08 Dec 2025 13:00:00 +0000</pubDate>
      <link>https://dev.to/nextblockcms/designing-a-type-safe-plugin-system-for-nextjs-why-zod-is-our-secret-weapon-1il7</link>
      <guid>https://dev.to/nextblockcms/designing-a-type-safe-plugin-system-for-nextjs-why-zod-is-our-secret-weapon-1il7</guid>
      <description>&lt;p&gt;We've just laid the foundation for the NextBlock CMS plugin system (the Block SDK), and the core decision was all about safety. When a developer installs a custom block, the last thing the CMS should do is crash due to invalid data.&lt;/p&gt;

&lt;p&gt;That’s where Zod comes in.&lt;/p&gt;

&lt;p&gt;Instead of relying on fragile runtime checks or simply trusting TypeScript interfaces (which disappear after compilation), we now enforce a strict "Contract" for every content block using Zod schemas.&lt;/p&gt;

&lt;p&gt;How it works: Every custom block must define its data structure as a Zod schema. If a user tries to save content that doesn't match the schema, the CMS intercepts the invalid data, shows a clear error, and prevents the crash. This moves data validation from an implicit guess to an explicit, self-documenting contract.&lt;/p&gt;

&lt;p&gt;This is critical for an Open-Source project aiming for professional extensibility—it lets the community build plugins without the fear of breaking the core platform.&lt;/p&gt;

&lt;p&gt;A peek at the contract:&lt;/p&gt;

&lt;p&gt;TypeScript&lt;/p&gt;

&lt;p&gt;// The Testimonial Block Schema&lt;br&gt;
export const TestimonialSchema = z.object({&lt;br&gt;
  quote: z.string().min(1, 'Quote cannot be empty.'),&lt;br&gt;
  author_name: z.string().min(1, 'Author is required.'),&lt;br&gt;
  image_url: z.string().url().nullable().default(null),&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;This is the future of resilient content modeling. Read the full guide on how to build your first custom block using this new system soon!&lt;/p&gt;

&lt;h1&gt;
  
  
  Nextjs #TypeScript #Zod #OpenSource #CMS #WebDev
&lt;/h1&gt;

</description>
      <category>zod</category>
      <category>cms</category>
      <category>opensource</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>Nextblock Update: 5 NPM Libs, `npm create nextblock`, and What's Next</title>
      <dc:creator>NextBlock</dc:creator>
      <pubDate>Mon, 03 Nov 2025 20:12:01 +0000</pubDate>
      <link>https://dev.to/nextblockcms/nextblock-update-5-npm-libs-npm-create-nextblock-and-whats-next-lo3</link>
      <guid>https://dev.to/nextblockcms/nextblock-update-5-npm-libs-npm-create-nextblock-and-whats-next-lo3</guid>
      <description>&lt;p&gt;Hey dev community!&lt;/p&gt;

&lt;p&gt;Sorry I've been a bit quiet on here. I've been deep in the trenches on Nextblock, and I'll be honest—getting the monorepo architecture &lt;em&gt;just right&lt;/em&gt; was much harder and took way longer than I originally anticipated.&lt;/p&gt;

&lt;p&gt;But that grind has finally paid off, and I'm stoked to share some massive updates.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Milestones
&lt;/h2&gt;

&lt;p&gt;The foundation for Nextblock is now set, and it's built to scale.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;NX Monorepo with 5 Libraries:&lt;/strong&gt; The project is now fully contained in an NX monorepo. This was a huge lift, but it means we can properly manage shared code, UI, utils, and more. The structure is now broken down into 5 core libraries.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;All Libs are on NPM:&lt;/strong&gt; All 5 of these new libraries have been successfully published to npm, making them available to the public.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;We Got the Name!&lt;/strong&gt; This is the one I'm most excited about. We've officially secured the &lt;code&gt;npm create nextblock&lt;/code&gt; command! This is a huge step for making onboarding easy and establishing the brand.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's Next: DX and Adoption
&lt;/h2&gt;

&lt;p&gt;With the core architecture solid, my focus is now shifting 100% to developer experience (DX) and getting this into the hands of early adopters.&lt;/p&gt;

&lt;p&gt;Here's the immediate roadmap:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Optimize &lt;code&gt;npm create nextblock&lt;/code&gt;:&lt;/strong&gt; Right now, the command is a placeholder. My next task is to build it out to be a proper scaffolding tool. It will gather setup information (project name, etc.) and provide clear guidelines on how to install.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a Starter Template:&lt;/strong&gt; I'll be creating the first official "early adopter" template. This is the key to letting you all &lt;em&gt;finally&lt;/em&gt; try Nextblock and see what I mean by "2025 ultrafast website speeds."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal has never changed: No compromise. This framework will be the end of WordPress.&lt;/p&gt;

&lt;p&gt;Thanks for following the journey. The &lt;em&gt;really&lt;/em&gt; fun stuff starts now.&lt;/p&gt;

</description>
      <category>npm</category>
      <category>opensource</category>
      <category>nextjs</category>
      <category>monorepo</category>
    </item>
    <item>
      <title>I Built a Smarter Rich-Text Editor with Live JS Blocks and Self-Converting Inputs</title>
      <dc:creator>NextBlock</dc:creator>
      <pubDate>Tue, 30 Sep 2025 20:15:51 +0000</pubDate>
      <link>https://dev.to/nextblockcms/i-built-a-smarter-rich-text-editor-with-live-js-blocks-and-self-converting-inputs-i3d</link>
      <guid>https://dev.to/nextblockcms/i-built-a-smarter-rich-text-editor-with-live-js-blocks-and-self-converting-inputs-i3d</guid>
      <description>&lt;p&gt;Hey everyone,&lt;/p&gt;

&lt;p&gt;Today marks a by milestone of my #buildinpublic journey for NextBlock CMS, and it's a big one. The core of the new Tiptap-based, Notion-style editor is complete for now!&lt;/p&gt;

&lt;p&gt;When I started this, my goal wasn't just to build another rich-text editor. It was to build one I'd actually want to use as a developer—one that respects my workflow and doesn't get in the way.&lt;/p&gt;

&lt;p&gt;I'm particularly excited about a few features I baked in:&lt;/p&gt;

&lt;p&gt;Direct CSS &amp;amp; JavaScript Blocks&lt;br&gt;
This was non-negotiable. How many times have you wanted to just drop in a quick style or a small script without having to create a whole new component? In this editor, you can. It allows for incredible flexibility, whether for embedding interactive charts, custom-styled divs, or anything else you can think of.&lt;/p&gt;

&lt;p&gt;Innovating on the "Little Things"&lt;br&gt;
I spent a lot of time on the UI/UX details that often get overlooked.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flsotskapieddhlxyd7s4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flsotskapieddhlxyd7s4.png" alt=" " width="800" height="515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A Smarter Color Wheel: The color picker is fully reactive. When a user changes any value (the HEX code, an RGB input, or drags the wheel), a state update triggers a utility function that instantly converts and syncs all the other input formats. No more manually converting HEX to RGB!&lt;/p&gt;

&lt;p&gt;Unit-Aware Font Sizing: Similar to the color picker, the font-size input understands units. When a user switches the dropdown from px to rem (or em, etc.), the numeric value automatically recalculates to the equivalent size. 16px becomes 1rem instantly. It removes all the guesswork.&lt;/p&gt;

&lt;p&gt;It's so exciting to see these features working together in harmony. This editor is the foundation for what I hope will be the most developer-friendly CMS on the market.&lt;/p&gt;

&lt;p&gt;What do you think? What's a "small" feature you wish your editor had?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>showdev</category>
      <category>ux</category>
    </item>
    <item>
      <title>I went silent for a month to build a WordPress killer. Here's why.</title>
      <dc:creator>NextBlock</dc:creator>
      <pubDate>Tue, 23 Sep 2025 18:42:32 +0000</pubDate>
      <link>https://dev.to/nextblockcms/i-went-silent-for-a-month-to-build-a-wordpress-killer-heres-why-3j9d</link>
      <guid>https://dev.to/nextblockcms/i-went-silent-for-a-month-to-build-a-wordpress-killer-heres-why-3j9d</guid>
      <description>&lt;p&gt;Hey DEV community,&lt;/p&gt;

&lt;p&gt;If you've been following my progress on NextBlock, you probably noticed I went completely dark for about a month. No posts, no updates. That's because I was deep in the trenches on a single, massive feature: implementing a ground-up, Notion-like editor using the incredible Tiptap 3 library.&lt;/p&gt;

&lt;p&gt;And it is almost perfect.&lt;/p&gt;

&lt;p&gt;The mission was to create an editing experience so fluid and powerful that it would make developers and bloggers feel like they finally have the tool they've always needed. No more fighting with clunky plugins, weird formatting, or limited functionality. Just pure, creative control.&lt;/p&gt;

&lt;p&gt;This isn't just about adding a "nice" editor. This is the core of a larger vision. I believe the reason WordPress has dominated for so long is its ecosystem, but its core experience has become bloated and outdated. The opportunity is ripe for a replacement.&lt;/p&gt;

&lt;p&gt;I'm building NextBlock to be that replacement. A CMS with the power and flexibility to replace them all. I truly think this is the "WordPress killer" people have been talking about for years, and it all starts with getting the content creation experience absolutely right.&lt;/p&gt;

&lt;p&gt;Building with Tiptap 3 has been a fantastic journey, and I can't wait to show you all what it can do. The level of customization is phenomenal, and it's the perfect foundation for the most flexible CMS ever built.&lt;/p&gt;

&lt;p&gt;More to come very, very soon!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86918mqna1misjscnl17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86918mqna1misjscnl17.png" alt=" " width="800" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
      <category>cms</category>
      <category>tiptap</category>
    </item>
    <item>
      <title>Creating Without Limits: A Deep Dive into the Enhanced Block Editor in NextBlock CMS</title>
      <dc:creator>NextBlock</dc:creator>
      <pubDate>Mon, 28 Jul 2025 17:57:51 +0000</pubDate>
      <link>https://dev.to/nextblockcms/creating-without-limits-a-deep-dive-into-the-enhanced-block-editor-in-nextblock-cms-2e20</link>
      <guid>https://dev.to/nextblockcms/creating-without-limits-a-deep-dive-into-the-enhanced-block-editor-in-nextblock-cms-2e20</guid>
      <description>&lt;p&gt;In Phase 2 of our journey, we're laser-focused on elevating the content creation experience within NextBlock CMS. A cornerstone of this effort is the significant upgrade to our block editor, powered by the robust Tiptap framework. We've listened to feedback and are thrilled to introduce features that will empower you to create richer, more dynamic content with unparalleled ease.&lt;/p&gt;

&lt;p&gt;The Power of Inline Widgets&lt;/p&gt;

&lt;p&gt;Imagine writing a blog post and wanting to seamlessly embed a relevant tweet, a compelling call-to-action button, or even a small poll directly within your paragraph. With our new inline widget capabilities, this is now a reality. These widgets are seamlessly integrated into your text flow, allowing for a more engaging and contextually relevant reading experience. Developers can easily create custom inline widgets, opening up endless possibilities for unique content types.&lt;/p&gt;

&lt;p&gt;Flexibility Redefined: Custom Block Layouts&lt;/p&gt;

&lt;p&gt;Traditional CMS editors often constrain you to predefined content structures. We're breaking free from those limitations with our enhanced custom block layouts. Now, you can create blocks that adapt to your content needs, whether it's a multi-column layout for showcasing features, a dynamic grid for image galleries, or a unique arrangement for testimonials. Our intuitive controls make it easy for content creators of all technical levels to design visually stunning and structurally sound pages.&lt;/p&gt;

&lt;p&gt;A Glimpse Behind the Scenes&lt;/p&gt;

&lt;p&gt;Our decision to build upon Tiptap has allowed us to leverage its extensibility and collaborative capabilities. [cite_start]The architecture is designed to be modular, making it easier for developers to contribute new block types and editor features in the future. [cite: 405] We believe this approach will foster a vibrant ecosystem of creative tools for NextBlock users.&lt;/p&gt;

&lt;p&gt;We're incredibly excited about the potential these editor enhancements unlock. They represent a significant step towards our goal of building a CMS that is not only technically superior but also a joy to use for content creators.&lt;/p&gt;

&lt;p&gt;Stay tuned for more updates on Phase 2, including improvements to the media library and our developer experience initiatives. We can't wait for you to experience the enhanced block editor firsthand!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3qhydrlxw3hptl9i3wih.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3qhydrlxw3hptl9i3wih.png" alt=" " width="627" height="636"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
