{"adoption": {"forks": 1033, "observed_at": "2026-08-28T04:08:09.257459+00:00", "stars": 3542}, "canonical_url": "https://ross.abutalabs.com/products/doracms", "card": {"archived": false, "artifact_type": "application", "description": "DoraCMS 是一个基于 EggJS 3.x + Vue 3 + TypeScript 的现代化内容管理系统，采用 pnpm monorepo 架构管理。它不仅仅是一个 CMS 系统，更是一个优秀的企业级应用架构实践。", "domain": ["cms", "web-development", "backend", "frontend", "developer-tools"], "enriched": true, "function": ["web-framework", "auth", "caching", "orm", "internationalization", "file-upload", "cli", "self-hosted"], "health_score": 75, "homepage": "https://www.doracms.net", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["doramart/DoraCMS"], "name": "doramart/DoraCMS", "platform": ["self-hosted", "cross-platform"], "pushed_at": "2026-07-12T05:15:46+00:00", "repo": "doramart/DoraCMS", "stars": 3542, "tags": ["cms", "eggjs", "vue3", "typescript", "pnpm-monorepo", "mongodb", "mariadb", "qiankun", "micro-frontend", "repository-pattern", "jwt", "element-plus", "content-management", "nodejs", "docker", "web-server"], "topics": ["nodejs", "mongodb", "doracms", "cms", "vue", "vuejs", "element-ui", "mit-license", "eggjs", "pnpm", "qiankun", "typescript", "nodejscms"], "urls": [], "use_cases": ["build a company website or blog with a self-hosted nodejs cms", "manage content with an admin dashboard built in vue 3", "create a fullstack nodejs project from a cli scaffold", "run a cms that can switch between mongodb and mariadb", "deploy a dockerized content management system", "build an api service platform with role-based access control", "learn an enterprise-grade repository pattern architecture in nodejs"], "what_it_is": "DoraCMS is an open-source, self-hosted content management system built on EggJS 3.x, Vue 3, and TypeScript, organized as a pnpm monorepo with a user-facing site, admin dashboard, and backend API. It features a Repository-pattern architecture with switchable MongoDB/MariaDB support, JWT auth with RBAC, Redis caching, micro-frontend support via qiankun, and Docker-based deployment.", "when_to_avoid": ["you need a headless-only CMS with no bundled frontend", "your stack is PHP/Python-based or you require PostgreSQL support today", "you prefer a lightweight minimal blog engine rather than a full enterprise platform", "you need native Windows support without WSL2 or Docker", "you require GraphQL APIs, which are only planned for future versions"], "when_to_choose": ["you want a modern node.js CMS with Vue 3 frontend and TypeScript throughout", "you need flexible database choice between MongoDB and MariaDB without rewriting business logic", "you want Docker one-command deployment and an interactive CLI scaffold", "you need built-in i18n, RBAC permissions, and file upload to OSS providers", "you want a well-documented, actively maintained MIT-licensed CMS"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/doracms", "repo": "doramart/DoraCMS", "role": "main", "score": 64}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.257459+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:34:28.259141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9850f8ff097b0c2a09ca6eb8283f1043f280c2f35eb1ad805402060b7b1941ec", "fetched_at": "2026-08-28T04:08:09.257459+00:00", "kind": "readme", "missing": false, "url": "https://github.com/doramart/DoraCMS"}, {"content_hash": "4cd1b17678f4c4417f4ec5bc1baadb928841aa02faa9f5f4f0f39eb8f64d7b24", "fetched_at": "2026-08-29T09:29:08.427642+00:00", "kind": "homepage", "missing": false, "url": "https://www.doracms.net"}, {"content_hash": "103898d8097e0c641ed3835dee53f426c80133a8e67a98d540f6df1224f6b85d", "fetched_at": "2026-08-29T09:29:08.436899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/guide/getting-started"}, {"content_hash": "5c6f32b4fdf81fdb0fa6623044833d4e54cc65d34bfaeaca46865d304408a578", "fetched_at": "2026-08-29T09:29:08.438899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/faq/installation"}, {"content_hash": "69c12515280a674ef429198340595775c21fe0026d950cd361495b0a3d99bd1f", "fetched_at": "2026-08-29T09:29:08.441119+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/introduction"}, {"content_hash": "2588d612acba08e22c97169663ff27fbae88cad320ac3519d669c90330e20f7a", "fetched_at": "2026-08-29T09:29:08.443008+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/changelog"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.257459+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:34:28.259141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9850f8ff097b0c2a09ca6eb8283f1043f280c2f35eb1ad805402060b7b1941ec", "fetched_at": "2026-08-28T04:08:09.257459+00:00", "kind": "readme", "missing": false, "url": "https://github.com/doramart/DoraCMS"}, {"content_hash": "4cd1b17678f4c4417f4ec5bc1baadb928841aa02faa9f5f4f0f39eb8f64d7b24", "fetched_at": "2026-08-29T09:29:08.427642+00:00", "kind": "homepage", "missing": false, "url": "https://www.doracms.net"}, {"content_hash": "103898d8097e0c641ed3835dee53f426c80133a8e67a98d540f6df1224f6b85d", "fetched_at": "2026-08-29T09:29:08.436899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/guide/getting-started"}, {"content_hash": "5c6f32b4fdf81fdb0fa6623044833d4e54cc65d34bfaeaca46865d304408a578", "fetched_at": "2026-08-29T09:29:08.438899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/faq/installation"}, {"content_hash": "69c12515280a674ef429198340595775c21fe0026d950cd361495b0a3d99bd1f", "fetched_at": "2026-08-29T09:29:08.441119+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/introduction"}, {"content_hash": "2588d612acba08e22c97169663ff27fbae88cad320ac3519d669c90330e20f7a", "fetched_at": "2026-08-29T09:29:08.443008+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/changelog"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:34:28.259141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9850f8ff097b0c2a09ca6eb8283f1043f280c2f35eb1ad805402060b7b1941ec", "fetched_at": "2026-08-28T04:08:09.257459+00:00", "kind": "readme", "missing": false, "url": "https://github.com/doramart/DoraCMS"}, {"content_hash": "4cd1b17678f4c4417f4ec5bc1baadb928841aa02faa9f5f4f0f39eb8f64d7b24", "fetched_at": "2026-08-29T09:29:08.427642+00:00", "kind": "homepage", "missing": false, "url": "https://www.doracms.net"}, {"content_hash": "103898d8097e0c641ed3835dee53f426c80133a8e67a98d540f6df1224f6b85d", "fetched_at": "2026-08-29T09:29:08.436899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/guide/getting-started"}, {"content_hash": "5c6f32b4fdf81fdb0fa6623044833d4e54cc65d34bfaeaca46865d304408a578", "fetched_at": "2026-08-29T09:29:08.438899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/faq/installation"}, {"content_hash": "69c12515280a674ef429198340595775c21fe0026d950cd361495b0a3d99bd1f", "fetched_at": "2026-08-29T09:29:08.441119+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/introduction"}, {"content_hash": "2588d612acba08e22c97169663ff27fbae88cad320ac3519d669c90330e20f7a", "fetched_at": "2026-08-29T09:29:08.443008+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/changelog"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.257459+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.257459+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.257459+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:34:28.259141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9850f8ff097b0c2a09ca6eb8283f1043f280c2f35eb1ad805402060b7b1941ec", "fetched_at": "2026-08-28T04:08:09.257459+00:00", "kind": "readme", "missing": false, "url": "https://github.com/doramart/DoraCMS"}, {"content_hash": "4cd1b17678f4c4417f4ec5bc1baadb928841aa02faa9f5f4f0f39eb8f64d7b24", "fetched_at": "2026-08-29T09:29:08.427642+00:00", "kind": "homepage", "missing": false, "url": "https://www.doracms.net"}, {"content_hash": "103898d8097e0c641ed3835dee53f426c80133a8e67a98d540f6df1224f6b85d", "fetched_at": "2026-08-29T09:29:08.436899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/guide/getting-started"}, {"content_hash": "5c6f32b4fdf81fdb0fa6623044833d4e54cc65d34bfaeaca46865d304408a578", "fetched_at": "2026-08-29T09:29:08.438899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/faq/installation"}, {"content_hash": "69c12515280a674ef429198340595775c21fe0026d950cd361495b0a3d99bd1f", "fetched_at": "2026-08-29T09:29:08.441119+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/introduction"}, {"content_hash": "2588d612acba08e22c97169663ff27fbae88cad320ac3519d669c90330e20f7a", "fetched_at": "2026-08-29T09:29:08.443008+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/changelog"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.257459+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.257459+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:34:28.259141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9850f8ff097b0c2a09ca6eb8283f1043f280c2f35eb1ad805402060b7b1941ec", "fetched_at": "2026-08-28T04:08:09.257459+00:00", "kind": "readme", "missing": false, "url": "https://github.com/doramart/DoraCMS"}, {"content_hash": "4cd1b17678f4c4417f4ec5bc1baadb928841aa02faa9f5f4f0f39eb8f64d7b24", "fetched_at": "2026-08-29T09:29:08.427642+00:00", "kind": "homepage", "missing": false, "url": "https://www.doracms.net"}, {"content_hash": "103898d8097e0c641ed3835dee53f426c80133a8e67a98d540f6df1224f6b85d", "fetched_at": "2026-08-29T09:29:08.436899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/guide/getting-started"}, {"content_hash": "5c6f32b4fdf81fdb0fa6623044833d4e54cc65d34bfaeaca46865d304408a578", "fetched_at": "2026-08-29T09:29:08.438899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/faq/installation"}, {"content_hash": "69c12515280a674ef429198340595775c21fe0026d950cd361495b0a3d99bd1f", "fetched_at": "2026-08-29T09:29:08.441119+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/introduction"}, {"content_hash": "2588d612acba08e22c97169663ff27fbae88cad320ac3519d669c90330e20f7a", "fetched_at": "2026-08-29T09:29:08.443008+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/changelog"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.257459+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.257459+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.257459+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:34:28.259141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9850f8ff097b0c2a09ca6eb8283f1043f280c2f35eb1ad805402060b7b1941ec", "fetched_at": "2026-08-28T04:08:09.257459+00:00", "kind": "readme", "missing": false, "url": "https://github.com/doramart/DoraCMS"}, {"content_hash": "4cd1b17678f4c4417f4ec5bc1baadb928841aa02faa9f5f4f0f39eb8f64d7b24", "fetched_at": "2026-08-29T09:29:08.427642+00:00", "kind": "homepage", "missing": false, "url": "https://www.doracms.net"}, {"content_hash": "103898d8097e0c641ed3835dee53f426c80133a8e67a98d540f6df1224f6b85d", "fetched_at": "2026-08-29T09:29:08.436899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/guide/getting-started"}, {"content_hash": "5c6f32b4fdf81fdb0fa6623044833d4e54cc65d34bfaeaca46865d304408a578", "fetched_at": "2026-08-29T09:29:08.438899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/faq/installation"}, {"content_hash": "69c12515280a674ef429198340595775c21fe0026d950cd361495b0a3d99bd1f", "fetched_at": "2026-08-29T09:29:08.441119+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/introduction"}, {"content_hash": "2588d612acba08e22c97169663ff27fbae88cad320ac3519d669c90330e20f7a", "fetched_at": "2026-08-29T09:29:08.443008+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/changelog"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.257459+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.257459+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:34:28.259141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9850f8ff097b0c2a09ca6eb8283f1043f280c2f35eb1ad805402060b7b1941ec", "fetched_at": "2026-08-28T04:08:09.257459+00:00", "kind": "readme", "missing": false, "url": "https://github.com/doramart/DoraCMS"}, {"content_hash": "4cd1b17678f4c4417f4ec5bc1baadb928841aa02faa9f5f4f0f39eb8f64d7b24", "fetched_at": "2026-08-29T09:29:08.427642+00:00", "kind": "homepage", "missing": false, "url": "https://www.doracms.net"}, {"content_hash": "103898d8097e0c641ed3835dee53f426c80133a8e67a98d540f6df1224f6b85d", "fetched_at": "2026-08-29T09:29:08.436899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/guide/getting-started"}, {"content_hash": "5c6f32b4fdf81fdb0fa6623044833d4e54cc65d34bfaeaca46865d304408a578", "fetched_at": "2026-08-29T09:29:08.438899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/faq/installation"}, {"content_hash": "69c12515280a674ef429198340595775c21fe0026d950cd361495b0a3d99bd1f", "fetched_at": "2026-08-29T09:29:08.441119+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/introduction"}, {"content_hash": "2588d612acba08e22c97169663ff27fbae88cad320ac3519d669c90330e20f7a", "fetched_at": "2026-08-29T09:29:08.443008+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/changelog"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:34:28.259141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9850f8ff097b0c2a09ca6eb8283f1043f280c2f35eb1ad805402060b7b1941ec", "fetched_at": "2026-08-28T04:08:09.257459+00:00", "kind": "readme", "missing": false, "url": "https://github.com/doramart/DoraCMS"}, {"content_hash": "4cd1b17678f4c4417f4ec5bc1baadb928841aa02faa9f5f4f0f39eb8f64d7b24", "fetched_at": "2026-08-29T09:29:08.427642+00:00", "kind": "homepage", "missing": false, "url": "https://www.doracms.net"}, {"content_hash": "103898d8097e0c641ed3835dee53f426c80133a8e67a98d540f6df1224f6b85d", "fetched_at": "2026-08-29T09:29:08.436899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/guide/getting-started"}, {"content_hash": "5c6f32b4fdf81fdb0fa6623044833d4e54cc65d34bfaeaca46865d304408a578", "fetched_at": "2026-08-29T09:29:08.438899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/faq/installation"}, {"content_hash": "69c12515280a674ef429198340595775c21fe0026d950cd361495b0a3d99bd1f", "fetched_at": "2026-08-29T09:29:08.441119+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/introduction"}, {"content_hash": "2588d612acba08e22c97169663ff27fbae88cad320ac3519d669c90330e20f7a", "fetched_at": "2026-08-29T09:29:08.443008+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/changelog"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:34:28.259141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9850f8ff097b0c2a09ca6eb8283f1043f280c2f35eb1ad805402060b7b1941ec", "fetched_at": "2026-08-28T04:08:09.257459+00:00", "kind": "readme", "missing": false, "url": "https://github.com/doramart/DoraCMS"}, {"content_hash": "4cd1b17678f4c4417f4ec5bc1baadb928841aa02faa9f5f4f0f39eb8f64d7b24", "fetched_at": "2026-08-29T09:29:08.427642+00:00", "kind": "homepage", "missing": false, "url": "https://www.doracms.net"}, {"content_hash": "103898d8097e0c641ed3835dee53f426c80133a8e67a98d540f6df1224f6b85d", "fetched_at": "2026-08-29T09:29:08.436899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/guide/getting-started"}, {"content_hash": "5c6f32b4fdf81fdb0fa6623044833d4e54cc65d34bfaeaca46865d304408a578", "fetched_at": "2026-08-29T09:29:08.438899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/faq/installation"}, {"content_hash": "69c12515280a674ef429198340595775c21fe0026d950cd361495b0a3d99bd1f", "fetched_at": "2026-08-29T09:29:08.441119+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/introduction"}, {"content_hash": "2588d612acba08e22c97169663ff27fbae88cad320ac3519d669c90330e20f7a", "fetched_at": "2026-08-29T09:29:08.443008+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/changelog"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:34:28.259141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9850f8ff097b0c2a09ca6eb8283f1043f280c2f35eb1ad805402060b7b1941ec", "fetched_at": "2026-08-28T04:08:09.257459+00:00", "kind": "readme", "missing": false, "url": "https://github.com/doramart/DoraCMS"}, {"content_hash": "4cd1b17678f4c4417f4ec5bc1baadb928841aa02faa9f5f4f0f39eb8f64d7b24", "fetched_at": "2026-08-29T09:29:08.427642+00:00", "kind": "homepage", "missing": false, "url": "https://www.doracms.net"}, {"content_hash": "103898d8097e0c641ed3835dee53f426c80133a8e67a98d540f6df1224f6b85d", "fetched_at": "2026-08-29T09:29:08.436899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/guide/getting-started"}, {"content_hash": "5c6f32b4fdf81fdb0fa6623044833d4e54cc65d34bfaeaca46865d304408a578", "fetched_at": "2026-08-29T09:29:08.438899+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/faq/installation"}, {"content_hash": "69c12515280a674ef429198340595775c21fe0026d950cd361495b0a3d99bd1f", "fetched_at": "2026-08-29T09:29:08.441119+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/introduction"}, {"content_hash": "2588d612acba08e22c97169663ff27fbae88cad320ac3519d669c90330e20f7a", "fetched_at": "2026-08-29T09:29:08.443008+00:00", "kind": "site_page", "missing": false, "url": "https://www.doracms.net/about/changelog"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 92, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3972, "days_push": 52, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 64, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}