Why I Built a Markdown-First CMS Instead of Another…
    Neura MarketNeura Market/Stable Diffusion
    ChatGPTChatGPTClaudeClaudeGeminiGeminiCursorCursorGrokGrokPerplexityPerplexityStable DiffusionStable Diffusion
    DeepSeekDeepSeekCoPilotCoPilotMidjourneyMidjourney
    View All Directories
    OverviewPromptsBlogVideosGuidesCoursesCommunityModelsLoRAsComfyUI WorkflowsTrending
    Stable DiffusionBlogWhy I Built a Markdown-First CMS Instead of Another Headless CMS
    Back to Blog
    Why I Built a Markdown-First CMS Instead of Another Headless CMS
    java

    Why I Built a Markdown-First CMS Instead of Another Headless CMS

    Thorsten Marx ㋡ June 25, 2026
    0 views

    To answer that question, I need to go back a bit. It all started in 2020, when I needed a CMS for a...


    title: 'Why I Built a Markdown-First CMS Instead of Another Headless CMS' published: true tags: [Java, CMS, flatfile, flatfilecms]

    To answer that question, I need to go back a bit. It all started in 2020, when I needed a CMS for a few personal projects. Up until that point I had mostly worked with WordPress, but it didn't feel like the right fit for what I had in mind. So I started an evaluation phase, looking at various systems.

    After a while I found several options that covered parts of my requirements, but none of them were quite what I wanted overall. That's when I decided to just build a CMS myself — the system I actually wanted to work with.

    Headless CMS were already gaining momentum back then, and I even spent some time building a headless prototype. But for the things I wanted to build, headless was clearly overkill and would have added significantly more work per project. Don't get me wrong: headless CMS are great, just not the right solution for every problem. That pushed me towards a more traditional approach.

    My goals for the first version were:

    • a lean and fast system
    • content in Markdown, so I could write using any editor I liked without having to build a UI
    • content and configuration versioned in Git
    • installation that's as simple as possible
    • a setup that's attractive for developers, both for plugin and project development

    Lightweight system, simple installation

    The system needed to be as simple to handle as possible. Installation should not require running through a complex wizard, and there should be no database involved.

    Installing CondationCMS is accordingly short:

    wget https://github.com/CondationCMS/cms-server/releases/download/v8.2.0/condation-server-linux-x64-2026.06.tar.gz
    tar xfvz condation-server-linux-x64-2026.06.tar.gz
    cd condation-server
    ./server.sh server start
    

    That's it. The CMS is running and the test site is available at http://localhost:2020.

    It starts in DEV mode and will need some configuration before going to production, but depending on your internet speed the whole thing is up in under five minutes.

    Content in Markdown, versioned in Git

    Creating content should be as straightforward as possible: create a file in your editor of choice, add front matter and Markdown content, done.

    ---
    title: Page title
    ---
    
    # Page content
    
    Here is some content!
    

    A big advantage here is that content is easy to create and can be managed directly in Git. And it goes beyond just the content itself: site configuration, defined image resolutions, module configuration, and project extensions all live in the same repository. Everything that belongs to the project gets versioned together, which makes deployment significantly simpler and keeps the project portable.

    A system that's attractive for developers

    Through the integration of the GraalJS engine, small extensions can be implemented directly inside the project as an Extension.

    For example, a new shortcode can be defined and then used in Markdown:

    import { $hooks } from 'system/hooks.mjs';
    // register component via js extensions
    $hooks.registerAction("system/content/shortCodes", ({shortCodes}) => {
    	shortCodes.put(
    			"hello",
    			({name}) => `Hello ${name}`
    	)
    	return null;
    })
    

    Extensions are plain JavaScript files, always part of the project, and automatically included in Git. They work well for small, project-specific solutions that you don't need to share across projects.

    When things get more complex, there are modules — what other systems usually call plugins. Modules are written in Java and offer everything extensions do, plus access to the full Java ecosystem. If you need to integrate a third-party library or build something that should be reusable across multiple sites, a module is the right tool.

    Providing that same shortcode via a module looks like this:

    // register component via java module
    @ShortCode("hello")
    public String hello_shortcode (String name) {
    	return "Hello " + name;
    }
    

    Modules are installed globally on the server and can then be activated per site.

    Looking back at those five goals from 2020 — lean, Markdown-based, Git-versioned, easy to install, developer-friendly — CondationCMS hits all of them. It's the system I wanted back then, and it's still the one I'd reach for today. If any of this sounds like what you've been looking for, the best way to find out is to give it a try.

    Tags

    javacmsflatfileflatfilecms

    Comments

    More Blog

    View all
    Context bankruptcy: The case for strategic forgetting for AI Agentsai

    Context bankruptcy: The case for strategic forgetting for AI Agents

    Most of us have seen a coding agent fail to complete a task we know it can do. We just don't...

    J
    James O'Reilly
    Parallel Compliance Engine: Drive-to-Sheets Multi-Agent Orchestrationgooglecloud

    Parallel Compliance Engine: Drive-to-Sheets Multi-Agent Orchestration

    When building Generative AI applications, developers often encounter a massive bottleneck: sequential...

    A
    Aryan Irani
    Is It Ethical to Post and Ask About Circuits on Dev.to?discuss

    Is It Ethical to Post and Ask About Circuits on Dev.to?

    I’ve been thinking about sharing some electronic circuit posts on Dev.to — small circuits, DIY...

    C
    codebunny20
    The One-Click Exporter: AI Studio Antigravity, Probed to Its Limitsagents

    The One-Click Exporter: AI Studio Antigravity, Probed to Its Limits

    What nobody tells you about exporting your multi-agent prototype to a local workspace. Every...

    L
    leslysandra
    Guarding the till while autonomous data agents do the diggingagenticarchitect

    Guarding the till while autonomous data agents do the digging

    Autonomous agents are genuinely good at answering messy business questions. Give one an LLM and a set...

    S
    Sireesha Pulipati
    Return on Attention: Why AI Code Reviews Are Wearing Us Outai

    Return on Attention: Why AI Code Reviews Are Wearing Us Out

    PR volume went up, ticket quality didn't, and the gap got filled with LLMs on both sides of the review: bots reviewing, bots replying, bots occasionally arguing with bots about priorities that only existed in a teammate's head. Our CEO named the actual problem, and it's bigger than code review.

    C
    christine

    Stay up to date

    Get the latest Stable Diffusion prompts, rules, and resources delivered to your inbox weekly.

    Neura Market LogoNeura Market

    Discover the best AI prompts, plugins, and resources for Stable Diffusion and more.

    Content Types

    • Rules
    • Prompts
    • MCPs
    • Agents
    • Guides

    Platforms

    • ChatGPT Directory
    • Claude Directory
    • Gemini Directory
    • Cursor Directory
    • Grok Directory
    • Perplexity Directory
    • DeepSeek Directory
    • CoPilot Directory
    • Stable Diffusion Directory
    • Midjourney Directory
    • All Directories

    Resources

    • Blog
    • Documentation
    • Help Center
    • Marketplace

    Legal

    • Privacy Policy
    • Terms of Service

    © 2026 Neura Market. All rights reserved.

    |

    Not affiliated with any AI platform vendors.

    Ready-made automations for this

    Workflows from the Neura Market marketplace related to this Stable Diffusion resource

    • Automated Markdown Report Generation for Task Trackingn8n · $19.07 · Related topic
    • Automate Bank Statement Conversion to Markdown with AIn8n · $14.57 · Related topic
    • Automate Purchase Order Data Extraction from Excel to Markdownn8n · $14.04 · Related topic
    • Convert URL HTML to Markdown Format and Extract Page Links Efficientlyn8n · $13.96 · Related topic
    Browse all workflows