{"title":"About Pugmill CMS","slug":"about-pugmill-cms","type":"post","excerpt":"A lightweight, open-source CMS built on Next.js for developers who want modern flexibility without the bloat.","content":"Pugmill CMS is an open-source content management system built on Next.js, PostgreSQL, and Drizzle ORM. The system targets developers and small teams requiring a modern stack without the overhead of a traditional CMS. Answer engine optimization ships as a native feature. Plugins add functionality, including a built-in MCP server, outbound webhooks, and AI provider-powered content generation and editing.\r\n\r\n## What Pugmill Is\r\n\r\nPugmill is a headless-ready CMS shipping with a native front-end theme system. The admin interface covers posts, pages, media, and users. A plugin architecture allows extending functionality without modifying the core codebase. The system stores content as Markdown and utilizes a hierarchical structure for nesting pages.\r\n\r\n## Who It's For\r\n\r\nPugmill targets developers setting up content sites. Operating the system assumes comfort with a terminal and environment variables. Users manage content, design, and plugins through the admin interface. Built for workflows pairing one human with one AI agent, the platform assumes the human sets the direction while the AI agent contributes context and execution. Testing covers Claude Code and similar AI-native environments.\r\n\r\n## Philosophy\r\n\r\nCore functionality includes operations running continuously, requiring deep integration, or establishing trust boundaries. Tasks an AI agent can execute as a one-off action remain outside the core product. All features function without an AI provider configured. Connecting a provider adds generation, suggestion, and automation to those existing capabilities.\r\n\r\n## Core Capabilities\r\n\r\nIntegrating an AI agent involves community recipes following the agent skills open standard. Compatible agents read a recipe markdown file directly from a repository URL for installation. A built-in skill assists agents in packaging and publishing new extensions.\r\n\r\nPugmill implements the llms.txt specification. It serves per-post metadata including summaries, question-and-answer pairs, and entities. Bot analytics track AI crawler and search spider visits to these endpoints.\r\n\r\nThe presentation layer uses React and Next.js, featuring swappable themes, server components, and a design token system. A public REST API provides cross-origin resource sharing, pagination, and data envelopes for external frontends.\r\n\r\nContent creation relies on a Markdown-first editor. Editors toggle between visual and raw Markdown views. Each post save generates a revision snapshot, allowing users to restore previous versions.\r\n\r\n## Storage and Security\r\n\r\nStorage abstractions support local filesystems and S3-compatible providers. Pre-commit hooks scan staged files for hardcoded secrets and connection strings. Admin routes require an authenticated session with specific role permissions. HTML rendering relies on sanitization to process raw inputs before display.\r\n\r\n## Technology Stack\r\n\r\nThe project uses Next.js 15 for the framework and TypeScript 5 for the language. Data management relies on PostgreSQL 16 and Drizzle ORM. Authentication uses NextAuth v5, supporting credentials and OAuth providers. Tailwind CSS 3 handles styling, and Tiptap 3 provides the editor interface.","publishedAt":"2026-04-19T15:49:00.000Z","updatedAt":"2026-04-20T20:58:06.457Z","author":{"name":"Michael Janzen"},"categories":[{"name":"My Venture","slug":"my-venture"}],"tags":[{"name":"cms","slug":"cms"},{"name":"open-source","slug":"open-source"},{"name":"structured-data","slug":"structured-data"},{"name":"ai-content","slug":"ai-content"},{"name":"analytics","slug":"analytics"},{"name":"ai-first","slug":"ai-first"},{"name":"ai-native","slug":"ai-native"}],"featuredImageUrl":"https://xqbrqyp8c9smsddf.public.blob.vercel-storage.com/uploads/1776716586855-pugmill-cms-screenshot.png","aeo":{"summary":"Pugmill CMS is a lightweight, open-source content management system built on Next.js, PostgreSQL, and Drizzle ORM, designed for developers and small teams who want a modern, flexible stack. It offers a headless-ready architecture with a built-in front-end theme system, Tiptap-powered markdown and visual editing, pluggable storage, role-based access, and AEO metadata support. It is intended for developers comfortable with terminal-based setup who need a full-featured CMS without the complexity of traditional platforms.","questions":[{"q":"What is Pugmill CMS?","a":"Pugmill CMS is a lightweight, open-source content management system built on Next.js, PostgreSQL, and Drizzle ORM, offering a headless-ready architecture with a built-in theme system, visual editing, and a plugin architecture for extending functionality without modifying the core."},{"q":"What tech stack does Pugmill CMS use?","a":"Pugmill CMS is built on Next.js, PostgreSQL, and Drizzle ORM, and uses a Tiptap-powered editor for markdown and visual content editing."},{"q":"What are the key features of Pugmill CMS?","a":"Pugmill CMS includes markdown and visual editing, pluggable storage (local or S3-compatible), a theme system with design token customisation, scheduled publishing, role-based access control, AEO metadata support, and built-in RSS feed, sitemap, and llms.txt routes."},{"q":"Who is Pugmill CMS designed for?","a":"Pugmill CMS is designed for developers and small teams who are comfortable with terminal-based setup and want to build and manage content sites without the overhead of a traditional CMS."},{"q":"Does Pugmill CMS support S3 storage?","a":"Yes, Pugmill CMS supports pluggable storage, allowing users to choose between local filesystem storage or S3-compatible object storage for media and file management."}],"entities":[{"type":"SoftwareApplication","name":"Pugmill CMS","description":"A lightweight, open-source headless-ready content management system built on Next.js, PostgreSQL, and Drizzle ORM, with a built-in theme system and plugin architecture."},{"type":"SoftwareApplication","name":"Next.js","description":"The React-based web framework used as the foundation for Pugmill CMS.","sameAs":"https://en.wikipedia.org/wiki/Next.js"},{"type":"SoftwareApplication","name":"PostgreSQL","description":"The open-source relational database used by Pugmill CMS for data storage.","sameAs":"https://en.wikipedia.org/wiki/PostgreSQL"},{"type":"SoftwareApplication","name":"Drizzle ORM","description":"The TypeScript ORM used by Pugmill CMS to interact with its PostgreSQL database."},{"type":"SoftwareApplication","name":"Tiptap","description":"The editor framework used to power Pugmill CMS's markdown and visual editing interface with a raw/visual toggle.","sameAs":"https://en.wikipedia.org/wiki/Tiptap"}],"keywords":["Pugmill CMS","Next.js CMS","headless CMS","Drizzle ORM","Tiptap editor","AEO Answer Engine Optimisation","role-based access control","S3-compatible object storage","open-source content management system","PostgreSQL CMS"],"schemaType":"HowTo","schemaData":{"name":"Product name Getting Started with Pugmill CMS Description A self-hosted CMS built for content teams Brand Pugmill Price 0 Currency USD Availability","steps":"Logging into the management dashboard via the /admin/login route.\nManaging initial posts, hierarchical pages, and media assets within the admin interface.\nConfiguring the storage architecture for either local filesystem or S3-compatible object storage.\nCustomizing frontend design tokens using the theme system and live preview functionality.\nAdding AEO metadata, including structured Q&A and entity data, to optimize content for AI crawlers.\nEditing or deleting the default placeholder pages to finalize the initial site setup.","totalTime":"15 minutes","description":"A guide to accessing and configuring a new installation of the Next.js and PostgreSQL-powered Pugmill CMS."}},"site":{"name":"Janzen Works","url":"https://janzenworks.com/"},"_links":{"canonical":"https://janzenworks.com//post/about-pugmill-cms","markdown":"https://janzenworks.com//post/about-pugmill-cms/llm.txt","json":"https://janzenworks.com//post/about-pugmill-cms/data.json"}}