演示

概念

每次从零重做一套 App 又慢又累——如果每个项目都在重写登录、角色、权限、菜单和数据库连接,真正的业务功能就会被拖慢。Quark ERP 的概念源自 Odoo ERP:精简 core,加上可扩展的 module/plugin。在 Quark ERP 里你只需专注业务逻辑。Core 负责底座,并在 runtime 加载你的插件代码——会计、库存、POS 等业务插件在系统启动时生效,而不是在编译期打包进去。

重要:命名

请先阅读本节再继续。该框架最初仅供 The Paradance 自用(内部项目),名为 quan-erp。后来开源,产品更名为 Quark ERP。如今 Doc 和界面里你会看到 Quark ERP——但在你的代码库中开发时,仍必须安装并导入 @quan-erp/* 包。保留该 npm scope,是为了让现有 import 继续可用。

  • 谈及产品、Doc 或 UI 时用 Quark ERP
  • 在代码库中一律使用 @quan-erp/*(例如 @quan-erp/shared-ui)
  • 不要找 @quark-erp — 该作用域不存在

核心已内置的能力

Base 运行时已包含多数 ERP 项目会先重复搭建的平台层。请直接使用这些能力,不要在每个插件里重写。

  • 认证与安全 — 登录、会话、角色、权限与 API 守卫
  • 内置数据 — 用户、往来单位、分支、设置、文件、货币及相关服务
  • 后端运行时 — 依赖注入、路由、模块生命周期、定时/队列与插件环境变量
  • 前端壳层 — 菜单、路由、本地化、Spotlight、仪表盘、首页快捷方式与公开路由
  • 插件在此核心之上补充业务能力——而不是替代核心

什么是插件

插件是包含后端 API、数据表与 React 界面的独立包。Base 应用保持精简,并动态加载插件。

  • 源码位于 plugins/<name>/,含 backend/、frontend/、module.metadata.json
  • 通过元数据与 module 表发现插件
  • 禁止直接导入其他插件的 src/

如何工作

Base 通过元数据发现插件,按依赖顺序加载,再由各插件注册后端服务与前端界面。

插件生命周期

从磁盘到 ERP 界面的流程:

共享库

插件应复用平台包,保持自身精简:

  • @quan-erp/shared-backend-core
  • @quan-erp/shared-frontend-core
  • @quan-erp/shared-ui
  • @quan-erp/shared-types

版本规则

插件内所有 @quan-erp/* 与 docker-compose 中的 base 镜像版本必须一致。