- 后端
- 前端
- 企业应用
- CRM
【免费下载链接】idurar-erp-crm
Free Open Source ERP CRM Software Accounting Invoicing | Node.Js React
导读
本篇技术指南以 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 应用与其他系统间的数据交换。
仓库中的集成与扩展机制体现在几个层面:
通用 CRUD 工厂:createCRUDController/index.js 从模型文件自动生成标准 CRUD 方法集;models/utils/index.js 通过
globSync扫描./src/models/**/*.js自动注册模型、实体与路由清单。这意味着新增一个appModels下的模型文件,即可自动获得全套 CRUD API——这是系统可扩展性的核心机制。控制器自动装配:appControllers/index.js 先加载
appControllers/*/**/下的自定义控制器,未定义自定义控制器的实体自动回退到通用 CRUD 控制器,实现了"默认全有、按需覆盖"的定制模式。设置系统:核心设置 API(coreApi.js 的
/setting/*系列路由)支持按settingKey读取、列表与批量更新配置,前端 SettingModule 提供公司信息、财务、货币格式、通用设置、公司 Logo 上传等可视化配置,满足按需定制的诉求。外部服务依赖:
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-crm2. 创建 MongoDB 数据库集群:注册 MongoDB 账号并创建数据库/集群,记录"Connect to your application URI",将<password>替换为实际密码,并把当前 IP 加入数据库 IP 白名单。
3–4. 配置环境变量:检查backend目录下的.env文件,将其中DATABASE="your-mongodb-uri"替换为实际 MongoDB URI。
5. 安装后端依赖
cd backend npm install6. 运行初始化脚本
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
相关推荐
IDURAR 开源 ERP & CRM 系统功能全景解析:基于 MERN 技术栈的企业级业务管理实战指南
IDURAR 开源 ERP & CRM 系统功能全景解析:基于 MERN 技术栈的企业级业务管理实战指南 导读 本文以 IDURAR 官方功能特性文档( fea
后端前端企业应用CRMIDURAR 开源 ERP/CRM 软件功能全景解析:基于 MERN 技术栈的 Node.js + React 企业管理系统
IDURAR 开源 ERP/CRM 软件功能全景解析:基于 MERN 技术栈的 Node.js + React 企业管理系统 导读 IDURAR(IDURAR
后端前端企业应用CRMIDURAR 开源 ERP/CRM 功能全景解析:基于 MERN 技术栈的免费开源企业管理软件
IDURAR 开源 ERP/CRM 功能全景解析:基于 MERN 技术栈的免费开源企业管理软件 IDURAR( idurar erp crm https://l
后端前端企业应用CRM
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考