mx-space/core

AI-powered CMS core for personal blogs and creator websites, with AI summaries, translation, moderation, and writing workflows.

mx-space/core – AI 기반 개인용 CMS 스택

무엇인가요 – 개인 블로그 및 크리에이터 사이트를 위한 완전한 헤드리스 콘텐츠 관리 시스템을 구축하는 모노레포입니다. 이 스택은 AI 강화되어 있으며 (예: AI 계약을 통한 콘텐츠 생성), 다음과 같은 구성 요소로 이루어져 있습니다.

구성 요소 기술 스택 역할
핵심 서버 (apps/core) NestJS + Fastify, PostgreSQL, Redis API, 스토리지, AI 관련 엔드포인트, 인증 처리.
관리 대시보드 (apps/admin) React 19 SPA 소유자가 콘텐츠를 편집하고 사이트를 구성하며 텔레메트리 데이터를 확인할 수 있는 웹 UI.
iOS 클라이언트 (apps/ios) UIKit + SwiftUI (XcodeGen) 서버와 생성된 OpenAPI 클라이언트를 통해 통신하는 네이티브 관리 앱.
푸시 리레이 (apps/push-relay-rs) Rust 프라이버시를 보장하는 APNs 리레이 (푸시 알림용).
텔레메트리 (apps/telemetry) Cloudflare Workers + D1 익명의 사용 데이터 수집.
공유 SDK (packages/*) TypeScript / Rust 타입 안전한 API 클라이언트, CLI (mxs), 데이터베이스 스키마, Lexical 에디터 계약, AI 이벤트 계약, 푸시 프로토콜, 웹훅 헬퍼, 마이그레이션 도구.

어떻게 연결되는가

README의 다이어그램은 일반적인 배포를 보여줍니다: 프론트엔드 (예: Yohaku의 Next.js 사이트)는 @mx-space/api-client를 통해 핵심 서버와 통신합니다. 관리용 SPA와 iOS 앱은 모두 이 SDK를 사용하는 얇은 클라이언트입니다. 서버는 알림 ID를 푸시 리레이에 전달하고, 리레이가 이를 Apple의 APNs로 전달합니다. 텔레메트리는 익명으로 Cloudflare 워커로 전송됩니다.

시작하기 (개발자용)

  1. Node 22 이상을 설치하고 Corepack을 활성화합니다.
  2. pnpm install로 모든 패키지를 가져옵니다.
  3. Docker로 PostgreSQL과 Redis를 실행합니다 (docker compose up -d postgres redis).
  4. 서버를 실행하려면 pnpm dev (http://localhost:2333), 관리 UI는 pnpm dev:admin (http://localhost:9528)을 실행합니다.
  5. OIDC 디바이스 플로우로 인증되는 CLI (mxs)를 사용해 콘텐츠 생성 및 설정을 수행합니다.

주목할 만한 기능

  • AI 계약 – @mx-space/ai 패키지는 클라이언트가 AI 생성 콘텐츠나 제안을 구독할 수 있는 서버 측 SSE 이벤트 유형을 정의합니다.
  • 타입 안전 SDK – @mx-space/api-client는 프론트엔드에 완전한 TypeScript 타입을 제공하여 런타임 오류를 줄입니다.
  • 모듈화된 배포 – 푸시 리레이와 텔레메트리는 별도의 서비스이므로 필요에 따라 필요한 것만 실행할 수 있습니다.
  • 마이그레이션 도구 – mongo-pg-cli는 기존 MongoDB 데이터를 새 PostgreSQL 스키마로 이전하는 데 도움을 줍니다.

누구에게 적합한가요?

  • 자체 호스팅되고 AI 기능이 강화된 블로그 플랫폼을 원하는 개인 크리에이터.
  • 강력한 TypeScript 생태계와 선택적 네이티브 iOS 관리 앱을 갖춘 즉시 사용 가능한 헤드리스 CMS를 찾는 개발자.
  • 프라이버시 중심의 푸시 알림이 필요한 팀 (Rust 리레이를 통해).

라이선스

AGPL‑v3 + MIT 이중 라이선스이며, 추가 조건은 ADDITIONAL_TERMS.md에 명시되어 있습니다.


  • 위의 모든 정보는 리포지토리의 README에서 직접 가져온 것이며, 외부 가정은 전혀 추가되지 않았습니다.*

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트