- 后端
- 前端
- 企业应用
- CRM
【免费下载链接】idurar-erp-crm
Free Open Source ERP CRM Software Accounting Invoicing | Node.Js React
IDURAR 是一款免费开源的 ERP(企业资源计划)与 CRM(客户关系管理)软件,采用 Node.js、React.js、Redux、Express.js、MongoDB 与 Ant Design(AntD)构成的 MERN 技术栈实现。本指南基于仓库内features/de_de_frei_offene_quelle_erp_crm_software.md的功能清单,逐模块拆解其用户、客户、销售、采购、库存、财务、项目、报表等核心能力,并结合仓库源码验证各模块的真实实现路径,帮助你快速理解该系统的架构组织方式与二次开发切入点。
一、技术栈总览:从 MERN 到可落地的业务底座
IDURAR 被定义为基于 "mern-stack" 的免费开源 ERP 与 CRM 应用。结合仓库实际依赖(见 backend/package.json 与 frontend/package.json),技术栈可进一步细化为:
| 层级 | 技术选型 | 仓库证据 |
|---|---|---|
| 前端框架 | React 18 + Vite 构建 | frontend/package.json中react: ^18.3.1、vite: ^5.4.8 |
| 状态管理 | Redux + Redux Toolkit | frontend/src/redux/目录下的store.js、rootReducer.js |
| UI 组件库 | Ant Design(antd 5.x) | frontend/package.json中antd: ^5.14.1 |
| 后端框架 | Express 4 | backend/package.json中express: ^4.18.2 |
| 数据存储 | MongoDB + Mongoose 8 | backend/package.json中mongoose: ^8.1.1 |
| 认证安全 | jsonwebtoken + bcryptjs | backend/src/controllers/middlewaresControllers/createAuthMiddleware/ |
| 数据校验 | Joi | backend/package.json中joi: ^17.11.0 |
| PDF 生成 | pug 模板 + html-pdf | backend/src/pdf/下的Invoice.pug、Quote.pug等 |
| 运行环境 | Node.js 20.9.0、npm 10.2.4 | 两端package.json的engines字段 |
后端入口 backend/src/app.js 展示了清晰的路由分层:/api挂载认证路由与业务路由,其中业务接口统一经过adminAuth.isValidAuthToken中间件鉴权;/download与/public分别用于文件下载与公开资源访问。业务 CRUD 路由由 backend/src/routes/appRoutes/appApi.js 统一生成——它会为每个实体自动注册create、read/:id、update/:id、delete/:id、search、list、listAll、filter、summary共 9 个标准端点,并针对 invoice、quote、payment 额外挂载邮件发送接口。这种"一套控制器工厂 + 统一路由生成"的架构,正是支撑下文各业务模块快速扩展的基础。
二、用户管理:账户生命周期与权限体系
原文档明确了用户管理模块的三个能力:管理员可创建、编辑、删除用户账户;实现基于角色的访问控制(RBAC)管理权限;提供认证与授权机制保障安全访问。
从源码看,这一模块由三层结构支撑:
- 数据模型层:核心模型位于 backend/src/models/coreModels/Admin.js,管理员账户与密码哈希分离存储(
AdminPassword模型),密码通过bcryptjs生成哈希,并配合salt随机串增强安全性。 - 认证中间件层:backend/src/controllers/middlewaresControllers/createAuthMiddleware/ 目录集中实现了完整认证链路,包括
login(登录)、logout(登出)、forgetPassword(忘记密码)、resetPassword(重置密码)、isValidAuthToken(令牌校验)、sendMail(邮件发送)等模块,覆盖了账户从创建到密码找回的全生命周期。 - 初始化脚本层:首次部署时执行
npm run setup(对应 backend/src/setup/setup.js),会创建角色为owner的超级管理员账户,并写入默认设置项与默认税率、默认付款方式,同时生成密码哈希与验证标记——这就是"管理员创建账户"能力在数据库层面的落地。
值得说明的是,RBAC 的权限粒度通过Admin模型中的role字段表达(如owner),后续开发者可在createCRUDController工厂(backend/src/controllers/middlewaresControllers/createCRUDController/index.js)基础上扩展更细粒度的权限校验逻辑。
三、客户关系管理(CRM):从联系人到沟通历史
原文档定义的 CRM 能力包括:创建与管理线索(Lead)、潜在客户和客户的联系记录;实现线索生成与资格认定以跟踪销售机会;管理包含邮件、电话、会议在内的客户沟通历史;支持日程安排并向客户发送通知或提醒。
仓库中的落地实体是Client(客户),其模型定义在 backend/src/models/appModels/Client.js,核心字段包括:
name(必填)、phone、country、address、email等联系信息;createdBy与assigned(均引用Admin),用于记录客户归属与跟进负责人——这正是"销售机会跟踪"与"分配"的数据基础;removed/enabled软删除与启用标记,配合created/updated时间戳支持审计。
客户模块的前端表单位于 frontend/src/forms/CustomerForm.jsx,页面入口为 frontend/src/pages/Customer/index.jsx。通过appApi.js统一生成的标准端点(/client/create、/client/list、/client/search、/client/summary等),CRM 中的"创建联系人、搜索客户、汇总统计"均可直接使用。关于沟通历史与日程提醒,从源码结构看属于后续可按Client关联扩展的领域,当前仓库以客户档案与 CRUD 能力为核心底座。
四、销售管理:订单、库存联动与发票生成
原文档描述的销售管理能力为:创建和管理销售订单并关联到具体客户;实现库存跟踪以检查产品可用性并在每次销售后更新库存;生成发票并集成常见支付网关;提供仪表盘与报表监控销售表现。
仓库中与销售直接相关的核心实体是Invoice(发票),模型见 backend/src/models/appModels/Invoice.js,其中包含大量销售链路所需的状态字段:
- 订单关联:
client字段(引用Client)强制关联客户,配合autopopulate插件自动填充客户信息; - 明细与金额:
items数组记录itemName、quantity、price、total,文档级聚合出subTotal、taxTotal、total,并支持taxRate、discount、credit; - 库存/履约状态:
status枚举draft / pending / sent / refunded / cancelled / on hold,paymentStatus枚举unpaid / paid / partially,isOverdue标记逾期,配合recurring(daily / weekly / monthly / annually / quarter)支持周期性发票; - 来源追溯:
converted字段记录发票是否由quote(报价单)或offer转化而来。
前端销售流程由 frontend/src/modules/InvoiceModule/ 支撑,包含创建、数据表格、查看、更新、记录付款(RecordPaymentModule)五个子模块,页面入口位于 frontend/src/pages/Invoice/。每次销售后库存更新与支付网关集成,可基于上述金额字段与payment引用在业务层扩展;邮件发送端点(/invoice/mail)已在 appApi.js 中预留,配合 backend/src/pdf/Invoice.pug 的 Pug 模板即可实现发票 PDF 附件发送。
五、采购管理:采购订单与供应商关系
原文档定义采购管理能力:创建与管理采购订单并指定数量与所需产品;跟踪供应商信息、维护供应商关系;收货并相应更新库存;处理采购发票与对供应商的付款。
从仓库当前结构看,采购链路并未单独建模为独立实体,而是依托统一的 CRUD 工厂与设置体系实现:任意业务实体(Client、Invoice、Payment等)都由 routesList 注册并复用同一套控制器工厂(createCRUDController)。因此,采购订单、供应商档案等实体可以按相同的"模型定义 + 路由注册"模式快速接入,复用create、update、filter、summary等既有能力。可推断其设计意图是:以通用 CRUD 基础设施覆盖采购域的增删改查,再通过设置模块(见第七节)定制采购相关业务参数。
六、库存管理:库存跟踪、预警与产品分类
原文档定义的库存能力包括:管理跟踪库存水平(含仓库转移与调整);设置低库存自动通知并在需要补货时生成采购订单;提供条码扫描能力;允许用户对产品分类、定义属性与设置定价信息。
仓库中并未发现独立的Product模型文件(Invoice.js中 product 引用字段被注释保留),但库存逻辑所需的数值基础已经存在:发票明细中的quantity与total为库存扣减提供了可追踪的销售流水;generateUniqueNumber.js(backend/src/middlewares/inventory/generateUniqueNumber.js)说明仓库设有"库存/单据编号生成"中间件,用于为发票、订单等生成唯一业务编号。低库存预警、条码扫描等功能属于业务策略层,可在现有模型与中间件基础上实现;产品分类与定价则可参考Invoice中currency、taxRate等字段的设计模式。
七、财务管理:总账、应收应付与财务报表
原文档定义的财务能力:实现总账系统跟踪支出与收入的财务交易;管理应收账款(AR)与应付账款(AP),包括开票与付款跟踪;生成资产负债表与损益表等财务报告;与常见会计软件集成实现无缝财务管理。
Payment(付款)模型是这一模块的核心,其控制器集合见 backend/src/controllers/appControllers/paymentController/,包含create、update、remove、sendMail、summary等端点。发票侧的paymentStatus、credit、isOverdue字段(Invoice.js)则构成应收管理(AR)的状态机:unpaid → partially → paid配合逾期标记,即可支撑付款跟踪。前端对应模块为 frontend/src/modules/PaymentModule/,含付款列表、付款详情查看与更新。
财务报表能力由两套机制支撑:
- 汇总端点:每个实体都注册了
summary接口(见 appApi.js),如 paymentController/summary.js、invoiceController/summary.js,可聚合出应收、已收等关键口径,作为损益类报表的数据源; - 设置与格式化:backend/src/settings/useMoney.js 与 backend/src/settings/useDate.js 提供金额与日期格式化工具,配合 defaultSettings/moneyFormatSettings.json 可统一货币符号、小数位等呈现规则,保证报表展示一致性。
八、项目管理:任务、进度与协作
原文档定义的项目管理能力:提供项目创建与跟踪;向团队成员分配任务、设定截止日期并监控进度;分配资源并跟踪项目支出;提供文档共享与实时通信等协作功能。
从仓库现状看,项目管理并非当前主线模块(当前仓库的成熟业务域集中在 Invoice / Quote / Payment / Customer / Settings,参见 frontend/src/pages/ 与 backend/src/models/appModels/)。但系统已为项目域预留了通用基础:任何新实体只需在 models/utils/index.js 的routesList中登记,即可自动获得全套 CRUD 与汇总端点;Admin模型的assigned关联模式(见 Client.js)也示范了"任务/项目分配给成员"的数据建模方式。因此项目管理功能可以低成本地基于既有架构扩展。
九、报表与分析:KPI 仪表盘与数据可视化
原文档定义的报表能力:围绕业务各方面生成综合报表与分析;提供可定制仪表盘监控关键绩效指标(KPI);允许用户基于具体需求定义自定义报表;实现数据可视化技术以生动呈现信息。
仓库的实现分层清晰:
- 前端仪表盘:frontend/src/modules/DashboardModule/ 提供了
SummaryCard、PreviewCard、CustomerPreviewCard与RecentTable组件,构成仪表盘的卡片式 KPI 展示骨架; - 数据汇总:后端各实体
summary端点(如 invoiceController/summary.js、clientController/summary.js)直接为 KPI 卡片提供聚合数据; - 可视化基础:前端依赖 antd)等组件支撑列表化呈现,图表类可视化可在
SummaryCard的数值口径之上进一步引入图表库扩展。
十、集成与定制:API、Webhooks 与可定制外观
原文档定义的集成能力:允许与常见第三方应用或 API(如邮件营销工具、CRM 平台)集成;允许基于具体业务需求定制功能与外观;提供 API 或 Webhooks 以便在 ERP/CRM 与其他系统间传输数据。
仓库中的集成点体现在三处:
- 邮件集成:后端依赖
resend(邮件发送服务)与nodemailer相关能力,邮件模板位于 backend/src/emailTemplate/(含SendEmailTemplate.js与emailVerfication.js),invoice/quote/payment 实体均已注册/mail端点,可直接对接邮件营销或通知场景; - 设置驱动的定制:settingController 提供
listBySettingKey、readBySettingKey、updateBySettingKey、updateManySetting等接口,配合 backend/src/setup/defaultSettings/ 下的 JSON 默认设置(公司信息、货币格式、发票规则等),实现"不改代码改配置"的业务定制;前端对应 SettingModule 提供公司设置、财务设置、货币格式设置等可视化配置界面; - 开放式 API:所有业务实体均通过 appApi.js 暴露 REST 端点,外部系统可直接调用
/api下的 JSON 接口完成数据交换;Webhooks 可在现有邮件发送与 CRUD 钩子基础上扩展。
十一、用户友好界面:Ant Design 与响应式体验
原文档强调用 React.js 与 Ant Design 设计直观、响应式、易用的界面;实现易用的导航菜单、搜索与筛选;确保不同设备与屏幕尺寸下 UI 一致且美观。
仓库证据充分:
- UI 组件体系全部基于 Ant Design(antd 5.x),并在 frontend/src/components/ 中沉淀了大量业务组件,如
AutoCompleteAsync(异步自动补全)、SelectAsync(异步选择)、MultiStepSelectAsync(多步选择)、DataTable(数据表格)、CrudModal、DeleteModal、SearchItem、ReadItem、UpdateForm、CreateForm等; - 导航与布局由 frontend/src/layout/ 与 frontend/src/apps/Navigation/NavigationContainer.jsx 组织,提供 Auth、Dashboard、Erp、Settings、Profile 等多种布局;
- 响应式支持由 frontend/src/hooks/useResponsive.jsx 提供,保证不同屏幕尺寸下的适配;
- 全局样式沉淀在 frontend/src/style/partials/(如
customAntd.css、layout.css、navigation.css),在 AntD 默认主题之上统一视觉风格。
十二、本地部署:从克隆到双端启动
围绕上述模块的完整本地运行流程(依据 INSTALLATION-INSTRUCTIONS.md 与 README.md 整理):
- 克隆仓库:
git clone https://gitcode.com/gh_mirrors/id/idurar-erp-crm.git(或从原始上游仓库拉取)并进入目录; - 准备 MongoDB:注册 MongoDB 账号、创建集群,记录 "Connect to your application URI",并将当前 IP 加入白名单;
- 配置环境变量:在
backend目录创建.env文件,将其中DATABASE="your-mongodb-uri"替换为实际 MongoDB URI; - 安装后端依赖:
cd backend && npm install; - 执行初始化脚本:
npm run setup,该脚本(backend/src/setup/setup.js)会创建owner管理员、写入默认设置、默认税率与付款方式; - 启动后端:
npm run dev(开发模式,经 nodemon 热重载),生产环境可执行npm start; - 安装前端依赖并启动:另开终端
cd frontend && npm install && npm run dev,随后在浏览器访问本地地址。
环境注意事项:仓库两端package.json均声明node: 20.9.0、npm: 10.2.4。若使用旧版 Node(如 v17)运行前端遇到 OpenSSL 错误(ERR_OSSL_EVP_UNSUPPORTED),官方建议升级到 Node.js v20,或启用 legacy OpenSSL provider(Unix 系执行export NODE_OPTIONS=--openssl-legacy-provider,Windows 命令提示符执行set NODE_OPTIONS=--openssl-legacy-provider),之后重新npm run dev。
结语
IDURAR 以 MERN 技术栈为底座,通过"通用 CRUD 控制器工厂 + 统一路由生成 + 设置驱动配置"的架构,将用户、CRM、销售、采购、库存、财务、报表等 ERP/CRM 核心域组织成可扩展的业务体系。本文基于仓库文档与源码逐模块还原了其能力矩阵与实现落点:无论是想快速评估其业务覆盖度,还是准备基于现有 CRUD 工厂扩展新模块(如项目管理、采购订单),都可以从本文梳理的模型文件、控制器目录与路由注册点入手,沿着同一套模式低成本推进。
- 后端
- 前端
- 企业应用
- CRM
【免费下载链接】idurar-erp-crm
Free Open Source ERP CRM Software Accounting Invoicing | Node.Js React
相关推荐
IDURAR 开源 ERP/CRM 功能全景解析:基于 MERN 技术栈的免费开源企业管理软件
IDURAR 开源 ERP/CRM 功能全景解析:基于 MERN 技术栈的免费开源企业管理软件 IDURAR( idurar erp crm https://l
后端前端企业应用CRMIDURAR ERP CRM 全功能解析:基于 MERN 技术栈的开源 ERP/CRM 软件
IDURAR ERP CRM 全功能解析:基于 MERN 技术栈的开源 ERP/CRM 软件 IDURAR 是一款开源(Fair Code 协议)的 ERP/C
后端前端企业应用CRMWorkshopDL终极指南:无需Steam客户端,轻松下载创意工坊模组
WorkshopDL终极指南:无需Steam客户端,轻松下载创意工坊模组 WorkshopDL是一款专为游戏玩家设计的开源跨平台模组下载工具,让你无需安装Ste
后端前端企业应用CRM
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考