doramart/DoraCMS

JavaScriptdoracms.net

DoraCMS 是一个基于 EggJS 3.x + Vue 3 + TypeScript 的现代化内容管理系统,采用 pnpm monorepo 架构管理。它不仅仅是一个 CMS 系统,更是一个优秀的企业级应用架构实践。

nodejsmongodbdoracmscmsvuevuejselement-uimit-licenseeggjspnpmqiankuntypescript
Croissance des étoiles
Étoiles
3.5k
Forks
1k
Croissance hebdomadaire
+1
Issues
22
1k2k3k
oct. 2015mai 2019janv. 2023sept. 2026
Artefactsnpm
README

EggCMS - 基于 EggJS + Vue3 的现代化 CMS 系统

License Node.js pnpm

📦 GitHub: doramart/DoraCMS | 📖 文档: www.doracms.net | 🌐 English: README.en.md

一个基于 EggJS 3.x + Vue 3 + TypeScript 的现代化内容管理系统,采用 pnpm monorepo 架构管理。

🔗 在线演示

📸 界面预览

管理后台

管理后台

用户中心

用户中心

内容管理

内容管理

AI 内容发布

AI 内容发布

模型管理

模型管理

首页

首页

🏗️ 项目架构

本项目采用 pnpm monorepo 架构,包含多个相关模块:

doracms/
├── server/                    # EggJS 后端服务
├── client/
│   ├── user-center/          # Vue3 用户前端
│   └── admin-center/         # Vue3 + TypeScript 管理后台
├── packages/                  # 🆕 独立发布的 npm 包
│   ├── sdk-js/               # @doracms/sdk (计划中)
│   ├── types/                # @doracms/types (计划中)
│   ├── cli/                  # doracms-cli (已发布)
│   └── utils/                # @doracms/utils (计划中)
└── package.json              # 根目录配置

📚 详细的 monorepo 结构说明请参考 MONOREPO_STRUCTURE.md

🛠️ 技术栈

后端 (Server)

  • 框架: EggJS 3.x
  • 数据库: MongoDB + Mongoose / MariaDB + Sequelize(双数据库支持)
  • 认证: JWT
  • 缓存: Redis(可选)
  • 文件上传: 支持阿里云 OSS、七牛云
  • 部署: Docker + Docker Compose

前端 (User Center)

  • 框架: Vue 3 + Composition API
  • 构建工具: Vite 4.x
  • UI库: Element Plus
  • 状态管理: Pinia
  • 国际化: Vue i18n

管理后台 (Admin Center)

  • 框架: Vue 3 + TypeScript
  • 构建工具: Vite 6.x
  • UI库: Element Plus
  • 样式: UnoCSS + Sass
  • 状态管理: Pinia
  • 图表: Echarts、@antv/g2
  • 富文本: @wangeditor/editor

🌍 国际化

  • 服务端启用了 localeDetector 中间件,自动根据 URL、Cookie 与 Accept-Language 选择语言,并同步到 session。
  • 所有后台接口均使用统一的国际化 key(common.*template.*mail.* 等),可在 server/config/locale 中扩展。
  • Nunjucks 过滤器与日期工具会读取当前请求的 ctx.locale,保持页面渲染与接口返回一致。

🚀 快速开始

环境要求

本地开发

  • Node.js >= 14.0.0 (推荐 18.x)
  • pnpm >= 8.0.0
  • MongoDB 或 MariaDB
  • Redis(可选)

Docker 部署

  • Docker >= 20.10
  • Docker Compose >= 2.0

安装依赖

# 克隆项目
git clone https://github.com/doramart/DoraCMS.git
cd DoraCMS

# 安装所有项目依赖
pnpm install

开发模式

# 同时启动服务端和用户前端
pnpm dev

# 启动所有项目(并行)
pnpm dev:all

# 单独启动项目
pnpm dev:server       # 启动后端服务 (端口: 7001)
pnpm dev:user-center  # 启动用户前端 (端口: 3000)
pnpm dev:admin-center # 启动管理后台 (端口: 5173)

生产构建

# 构建所有项目
pnpm build

# 单独构建
pnpm build:server
pnpm build:user-center
pnpm build:admin-center

📝 可用脚本

开发相关

  • pnpm dev - 启动服务端 + 用户前端
  • pnpm dev:all - 并行启动所有项目
  • pnpm dev:server - 仅启动后端服务
  • pnpm dev:user-center - 仅启动用户前端
  • pnpm dev:admin-center - 仅启动管理后台

构建相关

  • pnpm build - 构建所有项目
  • pnpm build:server - 构建后端
  • pnpm build:user-center - 构建用户前端
  • pnpm build:admin-center - 构建管理后台

代码质量

  • pnpm lint - 检查所有项目代码
  • pnpm lint:server - 检查后端代码
  • pnpm lint:user-center - 检查用户前端代码
  • pnpm lint:admin-center - 检查管理后台代码
  • pnpm format - 格式化所有代码

清理相关

  • pnpm clean - 清理所有 node_modules
  • pnpm clean:server - 清理后端依赖
  • pnpm clean:user-center - 清理用户前端依赖
  • pnpm clean:admin-center - 清理管理后台依赖

插件管理

  • pnpm plugin:install - 安装服务端插件
  • pnpm plugin:build - 构建插件
  • pnpm plugin:clean - 清理插件

🌐 访问地址

开发模式

Docker 部署

🐳 Docker 部署

📖 完整部署文档: Docker 部署指南

快速开始

# 1. 克隆项目
git clone https://github.com/doramart/DoraCMS.git
cd DoraCMS

# 2. 使用快速启动脚本
./docker-quickstart.sh

# 或使用 Docker Compose
docker compose up -d

数据库选择

使用 MongoDB(默认)

# 启动 MongoDB 模式
docker compose up -d

# 查看日志
docker compose logs -f eggcms-app

使用 MariaDB

# 启动 MariaDB 模式
docker compose --profile mariadb up -d

# 查看日志
docker compose logs -f eggcms-app-mariadb

可选组件

# 启用 Redis 缓存
docker compose --profile redis up -d

# 启用 Nginx 反向代理
docker compose --profile nginx up -d

# 完整堆栈 (MongoDB + Redis + Nginx)
docker compose --profile full up -d

# 完整堆栈 (MariaDB + Redis + Nginx)
docker compose --profile mariadb --profile redis --profile nginx up -d

配置环境变量

# 复制环境变量模板
cp docker.env.example .env

# 编辑配置(重要:修改安全相关配置)
vim .env

⚠️ 生产环境必须修改的配置:

  • APP_KEYS - 应用密钥
  • SESSION_SECRET - 会话密钥
  • 数据库密码

生成随机密钥:

# 使用 Node.js
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

# 或使用 OpenSSL
openssl rand -hex 32

💡 提示: 更多详细的 Docker 部署说明、数据持久化、健康检查、故障排除等内容,请查看 完整的 Docker 部署指南

📚 更多文档

🤝 贡献

欢迎提交 Pull Request 和 Issue!

� 技术交流群

欢迎加入我们的技术交流群,与其他开发者一起讨论和学习:

技术交流群

�📄 许可证

MIT License


🔧 常见问题

Q: 如何为特定项目添加依赖?

# 为服务端添加依赖
pnpm --filter "./server" add package-name

# 为用户前端添加依赖
pnpm --filter "./client/user-center" add package-name

# 为管理后台添加依赖
pnpm --filter "./client/admin-center" add package-name

Q: 如何解决依赖冲突?

# 清理所有依赖并重新安装
pnpm clean
pnpm install

Q: Node.js 版本不兼容怎么办?

admin-center 需要 Node.js >= 18.20.0,如果版本不兼容,请使用 nvm 切换版本:

nvm use 18
# 或者
nvm install 18.20.0
nvm use 18.20.0

代码规范

项目使用 ESLint 和 Prettier 进行代码规范检查和格式化。提交代码时会自动运行 lint-staged 进行检查。

Dépôts similaires
freeCodeCamp/freeCodeCamp

freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

TypeScriptnpmtutorialBSD 3-Clause "New" or "Revised" Licenselearn-to-codenonprofits
contribute.freecodecamp.org
455.2k46.2k
Chalarangelo/30-seconds-of-code

Coding articles to level up your development skills

JavaScriptnpmawesomeCreative Commons Attribution 4.0 Internationalawesome-listjavascript
30secondsofcode.org
129k12.5k
electron/electron

:electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS

C++appMIT Licenseelectronjavascript
electronjs.org
123k17.5k
nodejs/node

Node.js JavaScript runtime ✨🐢🚀✨

JavaScriptnpmOthernodejsjavascript
nodejs.org
121.2k36.7k
immich-app/immich

High performance self-hosted photo and video management solution.

TypeScriptnpmappGNU Affero General Public License v3.0backup-toolmobile-app
immich.app
113.7k6.8k
axios/axios

Promise based HTTP client for the browser and node.js

JavaScriptnpmlibraryMIT Licensehttp-clientjavascript
axios-http.com
109.2k11.8k
goldbergyoni/nodebestpractices

✅ The Node.js best practices list (July 2026)

DockerfiletutorialCreative Commons Attribution Share Alike 4.0 Internationalnodejsjavascript
twitter.com/nodepractices/
105.6k10.7k
oven-sh/bun

Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one

Rustcrates.iolibraryOtherbunbundler
bun.com
95.9k5k
nvm-sh/nvm

Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions. $nvm: 3ArcxqLtXMmBnWbbtfwQgVL3MNnDsggzgGDtXMnjpump

ShellcliMIT Licensenvmnodejs
95k10.4k
bytedance/deer-flow

An open-source long-horizon SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of tasks that could take minutes to hours.

PythonPyPIMIT Licenseagentagentic
deerflow.tech
82.1k11.3k
nestjs/nest

A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications with TypeScript/JavaScript 🚀

TypeScriptnpmlibraryMIT Licensenestjavascript
nestjs.com
76.6k8.5k
strapi/strapi

🚀 Strapi is the leading open-source headless CMS. It’s 100% JavaScript/TypeScript, fully customizable, and developer-first.

TypeScriptnpmOtherstrapinodejs
strapi.io
73.1k9.9k