Build the CMS we always wanted: MonkeysCMS (contributors wanted)

Published: (December 21, 2025 at 05:57 PM EST)
3 min read
Source: Dev.to

Source: Dev.to

Introduction

There are two kinds of CMS projects:

  1. Easy at first – until you need real structure, relationships, permissions, and performance.
  2. Powerful but heavyweight – with a large config surface, fragile update paths, and a lot of “CMS ceremony”.

MonkeysCMS is an attempt to combine the best ideas from Drupal and WordPress and rebuild them in a modern, code‑first way on top of the MonkeysLegion framework.

If you enjoy building systems (entities, schema, permissions, content modeling, tooling), your help is welcome to shape this into a real community CMS.

Core Concepts

  • Code‑first entities – content types are PHP classes, defined with attributes (no YAML stacks, no UI‑first configuration).
  • Auto‑sync schema – enabling a module creates tables immediately (no migrations or extra CLI steps).
  • True modularity – isolated modules with namespaces, dependencies, and lifecycle hooks.
  • Normalized relational database – proper relationships, avoiding the classic EAV pain.
  • API‑first – REST endpoints for CMS operations (content, users, permissions, taxonomy, menus, settings, modules…).
  • Modern PHP – requires PHP 8.4+ with strict types and modern patterns.

What the Repository Already Provides

  • Module enablement triggers discovery of entity classes, reads their attributes, generates SQL, and executes schema creation.
  • Attribute‑based model for ContentType, Field, Relation, and Id, plus a mapped set of field types.
  • System roles and permission patterns, including auto‑registration of entity permissions on module enable.
  • Vocabularies, hierarchical terms, and entity‑term assignment.
  • Endpoints and CLI commands (./monkeys …), caching via MonkeysLegion‑Cache, and a theme system driven by .mlc configuration.

Note: The project is early‑stage – the GitHub repo currently shows 0 issues and 0 PRs, meaning contributors can heavily influence the architecture and conventions.

Why Contribute Now?

  • The direction is clear: code‑first, modular, relational, API‑first.
  • The foundation already exists.
  • The project hasn’t ossified into “that’s how it’s always been”.

If you’ve ever wished for a CMS with Drupal‑level structure but the developer experience of modern frameworks, this is the moment.

Contribution Tracks

AreaSuggested Improvements
Schema generatorHarden indexes, constraints, diffs, safe updates
Entity hydration / serializationEdge‑case handling
RelationsMany‑to‑many helpers, cascade rules, eager loading patterns
PermissionsMiddleware, auditability (deny reasons, permission tracing)
ConsistencyError formats, pagination conventions, filtering/sorting spec
API docsOpenAPI spec, example clients, Postman collections
CLIModule lifecycle improvements, schema preview
Revisions & workflowsPublishing workflows, moderation states (attributes already hint at these concepts)
Media handlingImage/file/gallery field types
Theme managerBetter template engine integration
Starter themesReal‑world example templates
TestingUnit + integration coverage (schema generation, permission checks, taxonomy trees, CRUD flows)

Requirements & Quick Start

# Requirements
# - PHP 8.4+
# - MySQL 8+ or SQLite
# - Composer 2.x

git clone https://github.com/MonkeysCloud/MonkeysCMS.git
cd MonkeysCMS
composer install
cp .env.example .env

# Run the built‑in server
composer serve
# or
./monkeys serve

Contribution Flow

  1. Fork the repository.
  2. Create a branch for your change.
  3. Open a Pull Request.

Easy First‑Timer Ideas

  • Small improvements in documentation or tests.
  • Minor bug fixes or code style tweaks.

We’ll shape conventions together as we go.

Vision

  • Define content models like application code.
  • Enable a module → immediate schema, permissions, and API.
  • Get “CMS power” (content types, taxonomy, menus, blocks, roles) without legacy complexity.

If that resonates, jump in.

Repository & Contact

Questions? Drop a comment on GitHub or open an issue. Let’s build something great together.

Back to Blog

Related posts

Read more »