Skip to main content
MDCMS is an open-source headless CMS that treats a PostgreSQL database as the source of truth for structured Markdown and MDX content. This page describes the design principles, deployment topology, technology choices, and monorepo structure that underpin the system.

Design Principles

MDCMS follows a small set of architectural invariants that inform every subsystem.

Deployment Topology

A production MDCMS deployment consists of the server process, a PostgreSQL database, a Redis instance for session caching and rate limiting, and S3-compatible object storage for media assets. Clients interact through the TypeScript SDK or the embedded Studio component.
In local development, docker-compose.dev.yml starts PostgreSQL, Redis, and MinIO automatically. The server, Studio, and studio-example app run via bun run dev.

Technology Stack

Every technology choice has a specific justification. The table below documents the role and rationale for each dependency.

Monorepo Structure

MDCMS is an Nx-managed Bun workspace. The repository is organized into apps/ (deployable applications) and packages/ (shared libraries).

Package Dependency Graph

The packages and apps form a directed dependency graph. Core contracts flow from shared outward; higher-level packages never depend on apps.
Run bun nx graph at the repository root to see the live, interactive dependency graph in your browser.