Skip to main content
MDCMS is organized as a Bun monorepo with Nx for task orchestration. The workspace is split into four applications and four shared packages.

Overview

The root package.json declares workspaces:
Bun handles dependency resolution and linking. Nx manages build ordering, caching, and parallel task execution across the workspace.

Dependency Graph

Applications

apps/server

The Elysia HTTP server is the core of MDCMS. It exposes the REST API for content CRUD, schema registry, authentication, media uploads, webhooks, and environment management. Key dependencies: Elysia, Drizzle ORM, better-auth, @mdcms/shared, @mdcms/modules.

apps/cli

The command-line tool for managing MDCMS projects from your terminal or CI/CD pipelines. Available commands: Dependencies: @mdcms/shared, @mdcms/modules.

apps/studio-example

A demo Next.js application that embeds the <Studio /> component from @mdcms/studio. Used for local development and testing of the Studio UI. Not published to any registry. Dependencies: @mdcms/studio, @mdcms/sdk.

Shared Packages

packages/shared

The foundational package that all other packages depend on. Contains contracts, types, and utilities shared across the entire monorepo. Key exports:

packages/sdk

The TypeScript client SDK for querying MDCMS content from your application at build time or runtime. Key exports: Dependencies: @mdcms/shared.

packages/studio

The embeddable React UI component that provides the full visual editing experience — dashboard, content editor, media management, and settings. Built with: Dependencies: @mdcms/shared.

packages/modules

The module registry that provides extensibility. Modules can register server actions, CLI commands, and Studio UI extensions. Built-in modules: Dependencies: @mdcms/shared.