우리가 항상 원하던 CMS 만들기: MonkeysCMS (기여자 모집)

발행: (2025년 12월 22일 오전 07:57 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

위에 제공된 소스 링크 외에 번역할 텍스트가 포함되어 있지 않습니다. 번역하고 싶은 본문을 제공해 주시면 한국어로 번역해 드리겠습니다.

소개

CMS 프로젝트에는 두 가지 종류가 있습니다:

  1. 처음에는 쉬움 – 실제 구조, 관계, 권한 및 성능이 필요해질 때까지.
  2. 강력하지만 무거움 – 방대한 설정 범위, 취약한 업데이트 경로, 그리고 많은 “CMS 절차”가 동반됩니다.

MonkeysCMS는 Drupal과 WordPress의 최고의 아이디어를 결합하고, MonkeysLegion 프레임워크 위에 현대적인 코드‑우선 방식으로 재구축하려는 시도입니다.

시스템(엔티티, 스키마, 권한, 콘텐츠 모델링, 툴링) 구축을 즐긴다면, 여러분의 도움이 이 프로젝트를 실제 커뮤니티 CMS로 만들기 위해 환영됩니다.

Core Concepts

  • Code‑first entities – 콘텐츠 타입은 PHP 클래스이며, 속성(attribute)으로 정의됩니다 (YAML 스택이나 UI‑first 설정이 없습니다).
  • Auto‑sync schema – 모듈을 활성화하면 즉시 테이블이 생성됩니다 (마이그레이션이나 별도 CLI 단계가 필요 없습니다).
  • True modularity – 네임스페이스, 의존성, 라이프사이클 훅을 갖는 격리된 모듈 구조.
  • Normalized relational database – 올바른 관계를 사용하여 전통적인 EAV 방식의 복잡함을 피합니다.
  • API‑first – CMS 작업(콘텐츠, 사용자, 권한, 분류, 메뉴, 설정, 모듈 등)을 위한 REST 엔드포인트 제공.
  • Modern PHP – PHP 8.4+와 엄격 타입, 최신 패턴을 요구합니다.

What the Repository Already Provides

  • 모듈 활성화 시 엔티티 클래스를 탐색하고, 해당 속성을 읽어 SQL을 생성한 뒤 스키마를 즉시 적용합니다.
  • ContentType, Field, Relation, Id에 대한 속성 기반 모델과 매핑된 필드 타입 집합.
  • 시스템 역할 및 권한 패턴, 모듈 활성화 시 엔티티 권한을 자동 등록하는 기능.
  • 어휘(Vocabularies), 계층형 용어, 엔티티‑용어 할당 기능.
  • 엔드포인트 및 CLI 명령(./monkeys …), MonkeysLegion‑Cache를 통한 캐싱, .mlc 설정으로 구동되는 테마 시스템.

Note: 프로젝트는 초기 단계이며 현재 GitHub 저장소에 이슈와 PR이 0개라서, 기여자들이 아키텍처와 컨벤션에 큰 영향을 미칠 수 있습니다.

왜 지금 기여해야 할까요?

  • 방향이 명확합니다: code‑first, modular, relational, API‑first.
  • 기반이 이미 마련되어 있습니다.
  • 프로젝트가 “그냥 이렇게 해왔어”라는 고착 상태에 빠지지 않았습니다.

Contribution Tracks

영역제안된 개선 사항
Schema generator인덱스, 제약조건, 차이점, 안전한 업데이트 강화
Entity hydration / serialization엣지 케이스 처리
Relations다대다 헬퍼, 캐스케이드 규칙, 즉시 로딩 패턴
Permissions미들웨어, 감사 가능성(거부 사유, 권한 추적)
Consistency오류 형식, 페이지네이션 관례, 필터링/정렬 사양
API docsOpenAPI 사양, 예제 클라이언트, Postman 컬렉션
CLI모듈 라이프사이클 개선, 스키마 미리보기
Revisions & workflows게시 워크플로우, 검토 상태(속성이 이미 이러한 개념을 암시)
Media handling이미지/파일/갤러리 필드 유형
Theme manager템플릿 엔진 통합 개선
Starter themes실제 예시 템플릿
Testing단위 및 통합 커버리지(스키마 생성, 권한 검사, 분류 트리, CRUD 흐름)

요구 사항 및 빠른 시작

# 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.

비전

  • 애플리케이션 코드처럼 콘텐츠 모델을 정의합니다.
  • 모듈을 활성화하면 → 즉시 스키마, 권한 및 API가 제공됩니다.
  • 레거시 복잡성 없이 “CMS 파워”(콘텐츠 유형, 분류 체계, 메뉴, 블록, 역할)를 얻으세요.

그것이 공감된다면, 참여해 보세요.

저장소 및 연락처

질문이 있나요? GitHub에 댓글을 남기거나 이슈를 열어 주세요. 함께 멋진 무언가를 만들어 봅시다.

Back to Blog

관련 글

더 보기 »

한 줄의 Java로 전문 블로그 배포

현 상황의 문제점 온라인에서 Spring Boot 블로그 솔루션을 찾아보면 두 가지 극단적인 경우가 나타납니다. 한쪽에는 E...와 같은 대규모 CMS 플랫폼이 있습니다.