Build the CMS we always wanted: MonkeysCMS (contributors wanted)
Source: Dev.to
Introduction
There are two kinds of CMS projects:
- Easy at first – until you need real structure, relationships, permissions, and performance.
- 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, andId, 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.mlcconfiguration.
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
| Area | Suggested Improvements |
|---|---|
| Schema generator | Harden indexes, constraints, diffs, safe updates |
| Entity hydration / serialization | Edge‑case handling |
| Relations | Many‑to‑many helpers, cascade rules, eager loading patterns |
| Permissions | Middleware, auditability (deny reasons, permission tracing) |
| Consistency | Error formats, pagination conventions, filtering/sorting spec |
| API docs | OpenAPI spec, example clients, Postman collections |
| CLI | Module lifecycle improvements, schema preview |
| Revisions & workflows | Publishing workflows, moderation states (attributes already hint at these concepts) |
| Media handling | Image/file/gallery field types |
| Theme manager | Better template engine integration |
| Starter themes | Real‑world example templates |
| Testing | Unit + 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
- Fork the repository.
- Create a branch for your change.
- 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
- Repo: https://github.com/MonkeysCloud/MonkeysCMS
- Built on: MonkeysLegion Framework
- Slack: https://join.slack.com/t/monkeyslegion/shared_invite/zt-36jut3kqo-WCwOabVrVrhHBln4xhMATA
Questions? Drop a comment on GitHub or open an issue. Let’s build something great together.