news 2026/9/25 13:40:56

IDURAR 开源 ERP/CRM 系统功能全景解析:基于 MERN 技术栈的企业业务管理架构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
IDURAR 开源 ERP/CRM 系统功能全景解析:基于 MERN 技术栈的企业业务管理架构
  • 后端
  • 前端
  • 企业应用
  • CRM

【免费下载链接】idurar-erp-crm

Free Open Source ERP CRM Software Accounting Invoicing | Node.Js React

项目地址:https://gitcode.com/gh_mirrors/id/idurar-erp-crm
点击查看免费下载

导读

本篇技术指南以 IDURAR 官方功能清单(features 目录下的多语言产品说明)为主体,结合仓库源码深入剖析这款开源 ERP/CRM 系统的功能架构与实现原理。读者将理解 IDURAR 的 MERN 技术栈选型、十大核心业务模块(用户、CRM、销售、采购、库存、财务、项目、报表、集成、界面)的设计要点,掌握从克隆仓库到前后端联调运行的完整部署流程,并可通过源码路径进一步深入验证每个功能背后的实现机制。

一、项目概览与技术栈

IDURAR 是一款基于Advanced Mern Stack构建的开源 ERP / CRM 软件,覆盖发票(Invoice)、报价(Quote)、会计(Accounting)等核心业务场景。后端技术栈由 Node.js、Express.js、MongoDB(Mongoose)构成,前端使用 React.js 搭配 Ant Design(AntD)组件库与 Redux 状态管理。

从 backend/package.json 可以看到当前后端版本为4.1.0,并明确声明运行环境要求:Node.js20.9.0、npm10.2.4。关键依赖包括:

  • Mongoose 8.x:MongoDB ODM,配合mongoose-autopopulate实现关联字段自动填充;
  • express + express-rate-limit + cors + cookie-parser:HTTP 服务、接口限流、跨域与 Cookie 解析;
  • jsonwebtoken + bcryptjs:JWT 令牌认证与密码哈希;
  • joi:请求参数校验;
  • pug + html-pdf:使用 Pug 模板渲染并生成 PDF(报价单、发票、付款单);
  • currency.js / moment:金额计算与日期处理;
  • multer + @aws-sdk/client-s3:本地与 S3 对象存储的文件上传。

后端源码通过module-alias将@映射到src目录,统一了模块引用方式(如require('@/handlers/errorHandlers'))。

二、用户管理与权限控制(认证与授权)

文档规划的用户管理能力包括:

  • 允许管理员创建、编辑、删除用户账户;
  • 实现基于角色的访问控制(RBAC)以管理用户权限;
  • 提供认证与授权机制确保安全访问。

在仓库中,这一模块的落地位于 backend/src/controllers/coreControllers/adminAuth 与 backend/src/controllers/middlewaresControllers/createAuthMiddleware。createAuthMiddleware('Admin')工厂函数统一生成四类认证能力:

  • login:管理员登录;
  • forgetPassword/resetPassword:忘记密码与重置密码流程;
  • isValidAuthToken:JWT 令牌有效性校验中间件;
  • logout:登出。

对应路由在 backend/src/routes/coreRoutes/coreAuth.js 中公开:POST /login、POST /forgetpassword、POST /resetpassword、POST /logout(登出需经过isValidAuthToken中间件)。

管理员资料管理则在 backend/src/routes/coreRoutes/coreApi.js 中定义,包括读取管理员、更新密码、更新个人资料(支持通过singleStorageUpload上传头像图片),以及个人资料密码修改等接口,配合Admin、AdminPassword两个核心模型(见 backend/src/models/coreModels)。

三、CRM 客户关系管理

文档规划的 CRM 能力包括:

  • 创建和管理潜在客户与现有客户的联系人;
  • 实现销售线索的生成与资格认定;
  • 提供客户沟通历史管理工具(电子邮件、电话、会议);
  • 支持安排预约并向客户发送通知或提醒。

仓库中以Client模型(backend/src/models/appModels/Client.js)作为 CRM 的数据核心。Invoice模型通过client: { type: mongoose.Schema.ObjectId, ref: 'Client', autopopulate: true }与客户建立强关联,并在读取发票时自动填充客户完整信息。前端侧,客户管理页(frontend/src/pages/Customer/index.jsx)与CustomerForm.jsx表单(frontend/src/forms/CustomerForm.jsx)提供联系人录入、编辑与检索交互。

值得注意的是,仓库当前的业务实体集中在客户、发票、付款三类(见 backend/src/models/appModels 下的Client.js、Invoice.js、Payment.js),文档中提到的销售线索(Lead)资格认定、预约提醒等更广泛的 CRM 能力属于产品规划范围,从源码结构看尚未以独立实体形式在appModels中出现。

四、销售管理与发票

文档规划的销售管理能力包括:

  • 创建和管理销售订单,并关联到特定客户;
  • 实现库存跟踪以检查产品可用性,并在每次销售后更新库存水平;
  • 生成发票并集成主流支付网关;
  • 提供控制台与报告以跟踪销售绩效和分析趋势。

发票模块是仓库中实现最完整的部分。以 backend/src/models/appModels/Invoice.js 为例,其 Schema 覆盖了发票全生命周期字段:

  • 编号体系:number、year组合生成年度流水号;
  • 业务状态:status枚举draft / pending / sent / refunded / cancelled / on hold;
  • 付款状态:paymentStatus枚举unpaid / paid / partially,配合isOverdue逾期标记与credit信用额;
  • 金额结构:subTotal、taxRate、taxTotal、discount、total完整计算链;
  • 明细行:items数组记录itemName、description、quantity、price、total;
  • 转换来源:converted字段记录发票由quote或offer转换而来,与Quote、Offer模型关联;
  • 周期与到期:recurring(daily/weekly/monthly/annually/quarter)与date、expiredDate;
  • 附件与 PDF:files附件数组与pdf字段。

发票控制器(backend/src/controllers/appControllers/invoiceController)提供create、read、update、remove、paginatedList、summary、sendMail、schemaValidate等完整操作。其中sendMail与mail路由在 backend/src/routes/appRoutes/appApi.js 中针对invoice、quote、payment三个实体统一开放POST /{entity}/mail邮件发送接口。

前端发票模块(frontend/src/modules/InvoiceModule)包含创建、数据表格、读取、更新、记录付款(RecordPaymentModule)五个子模块,表单由InvoiceForm.jsx承载,覆盖从录入到开票的完整操作闭环。

五、采购管理

文档规划的采购管理能力包括:

  • 创建和管理采购订单,指定数量与所需产品;
  • 跟踪供应商信息并管理供应商关系;
  • 接收货物并相应更新库存水平;
  • 管理采购发票与对供应商的付款。

从当前仓库源码结构看,采购订单、供应商等尚未以独立 Mongoose 模型存在于 backend/src/models/appModels 中,这一能力属于文档定义的产品功能规划。不过,Invoice模型中的recurring与库存联动设计(销售后更新库存)为采购流程的落地预留了数据联动基础。读者可将此模块视为路线图中的规划能力,并结合库存管理章节理解其设计意图。

六、库存管理

文档规划的库存管理能力包括:

  • 提供工具管理和跟踪库存水平,包括库存转移与调整;
  • 设置低库存自动通知,并在需要补货时生成采购订单;
  • 提供条形码扫描能力以高效管理库存;
  • 允许用户对产品分类、定义属性并设置价格信息。

仓库中与库存直接相关的实现体现在后端中间件层。backend/src/middlewares/inventory/generateUniqueNumber.js用于生成唯一编号(典型用于发票、报价等单据的序列号生成),backend/src/middlewares/inventory/index.js 将编号生成器组织为可复用的中间件。

同时,前端提供了 InventoryForm.jsx 表单组件,表明产品与库存实体的录入界面已经存在。从模型目录看,Product等库存核心实体尚未出现在appModels中,条形码扫描、低库存预警与自动补货属于规划中的高阶能力。

七、财务管理与会计

文档规划的财务管理能力包括:

  • 实现总账系统以跟踪财务交易(成本与收入);
  • 管理应收应付账款,包括开票与付款跟踪;
  • 生成财务报表(资产负债表、损益表);
  • 集成主流会计软件实现无缝财务协同。

付款模块是当前仓库财务能力的核心实现。Payment模型(backend/src/models/appModels/Payment.js)与控制器 backend/src/controllers/appControllers/paymentController 提供创建、更新、删除、邮件发送、汇总等操作。Invoice模型通过payment: [ObjectId ref 'Payment']数组记录每张发票关联的付款记录,paymentStatus字段据此在unpaid / paid / partially间流转。

财务与货币相关设置由financeSettings.json与moneyFormatSettings.json(backend/src/setup/defaultSettings)定义,前端 FinanceSettingsModule 与 MoneyFormatSettingsModule 提供可视化配置界面。金额计算与货币格式化分别由 backend/src/settings/useMoney.js 与 frontend/src/settings/useMoney.jsx 封装,支持多币种记账。

八、项目管理

文档规划的项目管理能力包括:

  • 提供项目管理能力,允许用户创建和跟踪项目;
  • 向团队成员分配任务、设置截止日期并跟踪进度;
  • 分配资源并跟踪项目成本;
  • 提供协作功能,如文档共享与实时通信。

从当前仓库结构看,项目(Project)、任务(Task)实体尚未作为独立模型出现在appModels中,实时通信模块(如 Socket.IO 集成)也未在 backend/package.json 依赖中体现。因此该项目管理章节属于文档定义的产品愿景,当前开源版本尚未落地为独立业务模块。

九、报表与分析

文档规划的报表能力包括:

  • 生成关于业务各个方面的全面报告与分析;
  • 提供可定制的仪表盘以跟踪关键绩效指标(KPI);
  • 允许用户根据特定需求定义自定义报告;
  • 实现数据可视化技术以视觉化呈现信息。

仓库中,报表能力的实现以"汇总(summary)"接口为核心:通用 CRUD 控制器(backend/src/controllers/middlewaresControllers/createCRUDController)为每个业务实体统一生成summary方法,并在 backend/src/routes/appRoutes/appApi.js 中开放GET /{entity}/summary路由,用于聚合统计。

前端仪表盘由 frontend/src/modules/DashboardModule 承载,包含SummaryCard、PreviewCard、CustomerPreviewCard、RecentTable等组件(frontend/src/modules/DashboardModule/components),以卡片与表格形式呈现业务 KPI 概览。此外发票、客户、付款均提供独立的汇总接口(见 backend/src/controllers/appControllers 下各模块的summary.js),支撑多维度的业务统计。

十、集成与定制能力

文档规划的集成与定制能力包括:

  • 与主流第三方应用或 API 集成(如邮件工具、CRM 平台);
  • 允许按特定业务需求定制应用功能与外观;
  • 提供 API 或 Webhooks 以促进 ERP/CRM 应用与其他系统间的数据交换。

仓库中的集成与扩展机制体现在几个层面:

  1. 通用 CRUD 工厂:createCRUDController/index.js 从模型文件自动生成标准 CRUD 方法集;models/utils/index.js 通过globSync扫描./src/models/**/*.js自动注册模型、实体与路由清单。这意味着新增一个appModels下的模型文件,即可自动获得全套 CRUD API——这是系统可扩展性的核心机制。

  2. 控制器自动装配:appControllers/index.js 先加载appControllers/*/**/下的自定义控制器,未定义自定义控制器的实体自动回退到通用 CRUD 控制器,实现了"默认全有、按需覆盖"的定制模式。

  3. 设置系统:核心设置 API(coreApi.js 的/setting/*系列路由)支持按settingKey读取、列表与批量更新配置,前端 SettingModule 提供公司信息、财务、货币格式、通用设置、公司 Logo 上传等可视化配置,满足按需定制的诉求。

  4. 外部服务依赖:resend(邮件发送)、openai(AI 能力)、@aws-sdk/client-s3(对象存储)等依赖已就位,为邮件通知、智能助手与云存储集成提供了底层支撑。

十一、用户友好界面

文档规划的界面设计要求包括:

  • 使用 React.js 与 Ant Design 设计直观、响应式、用户友好的界面;
  • 实现简洁的导航菜单、搜索功能与过滤器;
  • 确保在不同设备与屏幕尺寸下保持一致且视觉舒适的界面。

前端目录结构充分体现了这一设计目标:

  • 组件库(frontend/src/components):DataTable(数据表格)、CrudModal、CreateForm、UpdateForm、SelectAsync、AutoCompleteAsync、SearchItem、ReadItem、DeleteModal、Notification等通用组件,覆盖增删改查全流程交互;
  • 布局体系(frontend/src/layout):DashboardLayout、CrudLayout、ErpLayout、AuthLayout、SettingsLayout、ProfileLayout等分层布局;
  • 样式主题(frontend/src/style/partials):core.css、erp.css、customAntd.css等基于 AntD 的定制样式;
  • 模块化页面(frontend/src/pages):Invoice、Payment、Customer、Settings 等业务页面与 frontend/src/modules 模块化组件一一对应,搜索、筛选、分页等能力由 DataTable 与上下文状态管理(frontend/src/context/crud)统一提供。

响应式方面,useResponsive.jsx 等 Hook 支撑了多设备适配,符合文档"跨设备一致体验"的要求。

十二、本地部署指南

根据 INSTALLATION-INSTRUCTIONS.md,完整部署分九步:

1. 克隆仓库

git clone https://github.com/idurar/idurar-erp-crm.git cd idurar-erp-crm

2. 创建 MongoDB 数据库集群:注册 MongoDB 账号并创建数据库/集群,记录"Connect to your application URI",将<password>替换为实际密码,并把当前 IP 加入数据库 IP 白名单。

3–4. 配置环境变量:检查backend目录下的.env文件,将其中DATABASE="your-mongodb-uri"替换为实际 MongoDB URI。

5. 安装后端依赖

cd backend npm install

6. 运行初始化脚本

npm run setup

该脚本(对应 backend/src/setup/setup.js)负责必要的数据库初始化与默认设置写入(默认设置 JSON 位于 backend/src/setup/defaultSettings)。

7. 启动后端服务

npm run dev

后端入口为 backend/src/server.js,生产环境可使用npm start。

8–9. 安装并启动前端:另开终端:

cd frontend npm install npm run dev

前端默认运行于http://localhost:3000(Vite 配置见 frontend/vite.config.js)。

OpenSSL 兼容性提示:若前端启动报 OpenSSL 错误(Node.js v17 兼容问题),建议升级到 Node.js v20(本项目engines声明的目标版本),或启用 legacy OpenSSL provider:

  • Unix 系(Linux / macOS / Git bash):export NODE_OPTIONS=--openssl-legacy-provider
  • Windows CMD:set NODE_OPTIONS=--openssl-legacy-provider
  • PowerShell:$env:NODE_OPTIONS = "--openssl-legacy-provider"

十三、总结

IDURAR 以 MERN 技术栈为基座,通过"模型自动注册 + CRUD 控制器工厂 + AntD 组件库"的组合,构建了一套功能覆盖用户、CRM、销售、库存、财务、报表等场景的 ERP/CRM 系统。其中发票、付款、客户三大业务实体与认证、设置两大支撑体系已在源码中完整落地;采购、项目、高级库存能力则属于文档规划的产品路线。对于希望深入二次开发的工程师,建议从 backend/src/models/utils/index.js(实体自动注册)、createCRUDController(通用 CRUD)与 appApi.js(路由生成)三处入手,即可快速理解系统"新增业务模块"的完整链路。

  • 后端
  • 前端
  • 企业应用
  • CRM

【免费下载链接】idurar-erp-crm

Free Open Source ERP CRM Software Accounting Invoicing | Node.Js React

项目地址:https://gitcode.com/gh_mirrors/id/idurar-erp-crm
点击查看免费下载

相关推荐

上一篇:终极Windows部署自动化:MediaCreationTool.bat完整指南与实战技巧
下一篇:Steam创意工坊下载终极指南:5分钟学会用WorkshopDL免费下载模组

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/25 13:38:54

Python批量处理PDF书签:pypdf读写与页码换算实战

简介&#xff1a;Python实现PDF书签读取与批量写入的源码包&#xff0c;面向需要使用PyPDF2处理PDF文档目录的Python开发者。压缩包共2个文件&#xff0c;核心是一个.py脚本&#xff0c;另有1个gz格式的依赖库压缩包&#xff0c;整体体积约40KB&#xff1b;脚本主逻辑清晰&…

作者头像 李华
网站建设 2026/9/25 13:36:17

1000条数据蒸馏出领域专家模型:法律问答实战复盘

“大模型蒸馏”这四个字&#xff0c;最近在圈子里出现的频率实在太高了。朋友圈、技术群、开源社区&#xff0c;隔三差五就有人晒出同款标题的分享&#xff1a;1000条数据&#xff0c;蒸馏出一个领域专家模型。说实话&#xff0c;第一次看到这种帖子我也心动过——不需要几十万…

作者头像 李华
网站建设 2026/9/25 13:35:59

Atlas 300V 24G推理加速卡与YOLO部署全链路解析

“Atlas部署YOLO”“Atlas 300V 24G是不是运算加速卡”&#xff0c;这两个问题放在一起&#xff0c;基本就是冲着华为昇腾推理卡来的。我自己从Atlas 300I到300V都折腾过一段时间&#xff0c;中间踩过不少坑&#xff0c;正好借这个机会把Atlas 300V 24G的身份、选型逻辑、部署Y…

作者头像 李华
网站建设 2026/9/25 13:35:56

Atlas 300V 24G昇腾推理卡:YOLO模型部署与优化实战

1. 先说清楚&#xff1a;Atlas 300V 24G到底是一张什么卡很多人在群里问“Atlas 300V 24G是运算加速卡吗”&#xff0c;我直接给结论&#xff1a;它是加速卡&#xff0c;但准确说是AI推理加速卡&#xff0c;不是训练卡&#xff0c;更不是图形卡。这个区别如果不弄清楚&#xff…

作者头像 李华
网站建设 2026/9/25 13:34:40

北京科华净化工程安全措施到位吗,专业程度如何

随着我国科研事业、生物医药产业与半导体产业的快速发展&#xff0c;国内对洁净空间工程的需求从基础洁净环境搭建逐步转向高精度、高合规、全周期服务的专业化方向发展。在北京这片汇聚了全国科研资源、高端制造产业的沃土&#xff0c;洁净工程行业也从早期的零散分包、重施工…

作者头像 李华