后端前端企业应用CRM【免费下载链接】idurar-erp-crmFree Open Source ERP CRM Software Accounting Invoicing | Node.Js React项目地址https://gitcode.com/gh_mirrors/id/idurar-erp-crm点击查看免费下载IDURAR 是一款免费开源的 ERP / CRM / 会计 / 发票一体化软件基于 MERN 技术栈Node.js、React.js、Redux、Express.js、MongoDB并采用 Ant DesignAntD构建界面覆盖销售、采购、库存、财务、项目与客户关系管理等核心业务场景。本文以项目官方功能文档为主线结合当前仓库的源码实现逐一拆解 IDURAR 的模块化能力、数据模型设计、REST API 组织方式与快速部署路径帮助读者理解一个开源 ERP/CRM 是如何从模型到接口再到前端模块被组织起来的并为二次开发与自托管部署提供可直接参考的实践指引。项目概览IDURAR 是什么IDURARIDURAR ERP CRM是一个免费的开源 ERP 与 CRM 应用官方文档将其定义为基于mern-stack构建Node.js React.js Redux Express.js MongoDB AntDesign (AntD)。从仓库实际配置看这一技术栈在两端得到印证后端 backend/package.json 声明了express ^4.18.2、mongoose ^8.1.1、jsonwebtoken ^9.0.2、bcryptjs、multer、joi参数校验、pugPDF 模板引擎、html-pdf等依赖并约定运行环境为 Node 20.9.0 / npm 10.2.4前端 frontend/package.json 声明了antd ^5.14.1、ant-design/pro-layout、react ^18.3.1、redux/reduxjs/toolkit、vite等依赖类型为 ES Moduletype: module。从功能定位上看IDURAR 覆盖了从客户线索、销售订单、发票收款到采购、库存、财务总账和项目协作的完整业务链路。官方文档按以下能力域对系统进行了定义下文将逐域结合源码展开。用户管理账户、角色与安全认证官方文档对用户管理模块的要求是允许管理员创建、编辑和删除用户账户实现基于角色的访问控制RBAC以管理用户权限提供认证与授权机制确保安全访问。在 IDURAR 的源码中这一能力由核心模型与认证中间件共同承载。核心用户模型位于 Admin.js通过backend/src/models/coreModels/AdminPassword.js存储密码哈希认证相关路由集中在 coreAuth.js暴露了以下接口POST /login 登录 POST /forgetpassword 忘记密码 POST /resetpassword 重置密码 POST /logout 登出需携带有效令牌认证逻辑由 createAuthMiddleware 统一封装它接收用户模型并生成login、logout、forgetPassword、resetPassword、isValidAuthToken五个方法密码使用bcryptjs进行哈希会话令牌基于jsonwebtoken签发。管理员资料更新、密码修改等接口则在 coreApi.js 中定义如/admin/profile/update、/admin/password-update/:id。需要说明的是仓库中Admin模型包含role字段setup.js初始化时会创建角色为owner的默认管理员这为角色区分提供了数据基础但从当前仓库结构看细粒度的权限判定逻辑主要依赖登录态令牌校验isValidAuthToken而非逐角色矩阵读者在二次开发时可根据业务需要在此基础上扩展 RBAC 规则。客户关系管理CRM线索、联系人记录与沟通历史官方文档定义的 CRM 能力包括创建并管理潜在客户leads与现有客户clients的联系人记录实现线索生成与评分lead scoring功能以跟进销售机会提供客户沟通历史管理工具涵盖邮件、电话与会议记录支持预约日程并向客户发送通知或提醒。在仓库中客户主数据由 Client.js 承载其字段设计非常贴近 CRM 场景字段类型说明nameString必填客户名称phone/emailString联系方式country/addressString地域与地址信息createdBy/assignedObjectId → Admin创建者与负责的销售/管理员指派关系enabledBoolean默认 true启用状态removedBoolean软删除标记该模型启用了mongoose-autopopulate插件关联查询时如读取发票时会自动填充客户对象减少手工populate调用。assigned字段即线索分配/负责人的实现载体配合管理员的role字段可以支撑线索跟踪与机会管理的业务闭环。沟通历史邮件/电话/会议与日程提醒属于官方文档定义的目标能力其具体落地取决于上层业务编排当前仓库的Client模型与发票/收款模块提供了承载这些记录的数据基座。销售管理订单、库存联动、发票与支付官方文档对销售管理域的定义创建并管理销售订单与具体客户关联实现库存跟踪核验产品可用性并在每次销售后更新库存水平生成发票并与主流支付网关集成管理支付提供仪表盘与报表监控销售业绩、分析趋势。销售域在 IDURAR 中的核心是Invoice发票模型见 Invoice.js。该模型几乎完整映射了订单 → 开票 → 收款的字段需求客户关联client字段必填ObjectId → Clientautopopulate明细行items数组每行包含itemName、description、quantity默认 1、price、total金额汇总taxRate、subTotal、taxTotal、total、discount、credit生命周期状态status枚举draft / pending / sent / refunded / cancelled / on holdpaymentStatus枚举unpaid / paid / partially另有isOverdue逾期标记与approved审批标记业务追溯recurring支持daily / weekly / monthly / quarterly / annually周期converted记录由 Quote/Offer 转换而来辅助信息numberyear编号体系、currency默认NA自动大写、pdf文件路径、files附件数组、notes。对应的 REST 接口在 appApi.js 中由通用路由工厂统一生成为每个业务实体client / invoice / quote / payment 等自动注册POST /:entity/create 创建 GET /:entity/read/:id 读取详情 PATCH /:entity/update/:id 更新 DELETE /:entity/delete/:id 删除 GET /:entity/search 搜索 GET /:entity/list 分页列表 GET /:entity/listAll 全量列表 GET /:entity/filter 过滤 GET /:entity/summary 汇总统计特别地invoice、quote、payment三个实体还会额外注册POST /:entity/mail邮件发送接口quote额外注册GET /quote/convert/:id转换接口——这正对应文档中生成发票 集成支付 发送给客户的销售闭环。PDF 渲染则由后端pug模板Invoice.pug、Offer.pug、Quote.pug、Payment.pug配合html-pdf完成。采购管理采购订单、供应商与收货官方文档定义的采购域能力创建并管理采购订单指定所需数量与产品跟踪供应商信息管理供应商关系接收货物并相应更新库存水平管理采购发票与对供应商的付款。从当前仓库结构看采购域Purchase Order、Supplier尚未以独立模型出现在appModels目录中现有业务模型集中在Client、Invoice、Payment三个核心对象上。可以推断采购管理在 IDURAR 中属于规划中的能力域其收货更新库存供应商付款等能力需要借助现有Invoice/Payment模型的机制发票状态机与收款记录在业务层编排实现。读者在评估二次开发时可将此域视为可扩展空间参照Invoice模型的写法即可为 Supplier、PurchaseOrder 建立同类 Schema 并接入routesList自动获得全套 CRUD 接口。库存管理库存水平、低库存通知与产品定义官方文档定义的库存域能力跟踪库存水平支持库存转移transfers与调整adjustments配置低库存自动通知并在需要补货时生成采购订单提供条形码扫描能力以高效管理库存允许对产品进行分类、定义属性并设置定价信息。与采购域类似库存Product / Inventory在仓库backend/src/models/appModels中尚无独立模型但仓库根目录下存在backend/src/middlewares/inventory/中间件目录其中 generateUniqueNumber.js 负责生成唯一编号——这正是发票/库存单据编号体系的基础设施。同时 Invoice.js 中items明细行的设计itemName/quantity/price/total已经预留了与产品主数据对接的位置被注释的product: ObjectId字段暗示了未来产品模型的存在。因此库存域在 IDURAR 中的现状是单据级支持发票行、数量与金额已就绪产品主数据与条码等能力属于可扩展规划项。财务管理总账、应收应付与财务报告官方文档定义的财务域能力实现总账ledger系统跟踪支出与收入等财务交易管理应收AR与应付AP包括开票与付款跟踪生成财务报表包括资产负债表与损益表与主流会计软件集成实现无缝财务管理。财务域是 IDURAR 落地最完整的模块之一其载体是 Payment.js 与发票的付款状态机Payment模型记录每笔收款的client、invoice、date、amount、currency、ref、description并与发票通过payment: [ObjectId]数组双向关联发票的paymentStatusunpaid / paid / partially与isOverdue字段共同支撑应收跟踪部分收款自动标记partially逾期标记isOverduesummary接口GET /:entity/summary为每个实体提供汇总统计这是应收/应付报表与仪表盘 KPI 的数据来源。付款在 PDF 端同样有独立模板 Payment.pug说明收款单可独立生成凭证。会计软件集成如 QuickBooks 等属于官方文档定义的目标能力需要读者依据自身业务对接对应服务商 API。项目管理任务、里程碑与团队协作官方文档定义的项目域能力提供项目管理能力创建并跟踪项目向团队成员分配任务、设定截止日期并监控进度分配资源并跟踪项目支出提供协作功能如文档共享与实时沟通。当前仓库的appModels中同样未出现独立的 Project / Task 模型因此项目模块在 IDURAR 现有版本中属于功能蓝图中的扩展域。但从架构上看其实现路径是清晰的任何新实体只需按Client/Invoice的模式定义 Mongoose Schema并在 models/utils 的routesList中登记{ entity, controllerName }appApi.js 的路由工厂便会自动为其生成全部 CRUD、搜索、列表与汇总接口前端模块见下文也能复用统一的数据表格与表单组件。这是 IDURAR 以统一 CRUD 抽象支撑多业务域的架构红利。报表与分析仪表盘、KPI 与数据可视化官方文档定义的报表与分析能力针对业务各方面生成全面报告与分析提供可定制仪表盘以监控关键绩效指标KPI允许用户基于特定需求定义自定义报表实现数据可视化技术以直观美观的方式呈现信息。IDURAR 的报表能力首先体现在后端的summary聚合接口每个实体都有GET /:entity/summary其次体现在前端 Dashboard 与各模块的汇总卡片上。前端仓库中 DashboardModule 及其组件SummaryCard.jsx、PreviewCard.jsx、RecentTable/index.jsx、CustomerPreviewCard.jsx构成了仪表盘 UI 基座Redux 侧存在独立的adavancedCrud注意仓库中该目录名拼写为 adavancedCrud属项目原样状态层见 frontend/src/redux/adavancedCrud用于支撑高级查询、过滤与分页的数据流。前端工具链 utils/calculate.js 承担金额计算utils/statusTagColor.js 为状态字段提供可视化标签配色这些都是KPI 呈现 数据可视化的直接实现证据。集成与定制设置中心、文件上传与开放 API官方文档定义的集成与定制能力允许与热门第三方应用或 API 集成如邮件营销工具或 CRM 平台允许根据特定业务需求定制应用功能与外观提供 API 或 Webhooks便于 ERP/CRM 与其他系统之间交换数据。IDURAR 的可配置性由一个全局设置系统承载其数据结构与默认值位于 backend/src/setup/defaultSettings 目录下的多个 JSON 文件。以 companySettings.json 为例每条设置记录包含四个字段字段说明示例值settingCategory设置分组company_settingssettingKey设置的唯一键名company_name、company_logo、company_tax_numbersettingValue设置值COMPANY Name、图片相对路径等valueType值类型string/image配套的后端设置接口集中在 coreApi.js/setting/listAll、/setting/readBySettingKey/:settingKey、/setting/listBySettingKey、/setting/updateBySettingKey/:settingKey、/setting/updateManySetting以及带singleStorageUpload文件上传中间件的/setting/upload/:settingKey用于公司 Logo 等图片型设置。setup.js初始化时通过globSync扫描defaultSettings/**/*.json并批量写入数据库这就是开箱即得全套默认配置的实现机制。文件上传统一走 uploadMiddleware基于multer支持本地存储与 AWS S3aws-sdk/client-s3依赖两种后端。外部集成方面后端依赖中包含openaiAI 能力接入与resend邮件服务说明其集成面已预留 AI 与邮件通道通用 REST API上文路由工厂生成的 CRUD 接口天然可作为第三方系统与 Webhook 集成的数据交换层。用户友好界面Ant Design 与响应式体验官方文档对界面层的定义使用 React.js 与 Ant Design 设计直观、响应式、易用的界面实现易用的导航菜单、搜索功能与过滤器确保跨设备与屏幕尺寸下 UI 一致且视觉友好。前端代码库的模块组织直接印证了这一点布局体系frontend/src/layout/下提供AuthLayout、CrudLayout、DashboardLayout、ErpLayout、ProfileLayout、SettingsLayout等成套布局通用组件frontend/src/components/提供DataTable、CreateForm、UpdateForm、CrudModal、DeleteModal、SelectAsync异步选择、AutoCompleteAsync、SearchItem、ReadItem、SidePanel、Notification、Loading等高度复用组件业务表单frontend/src/forms/下按单据类型拆分InvoiceForm、PaymentForm、CustomerForm、LeadForm、OrderForm、TaxForm、CurrencyForm等配合frontend/src/forms/DynamicForm实现动态渲染模块化页面frontend/src/modules/下每个业务域Invoice、Payment、Quote、Profile、Setting 等都遵循DataTableModule / ReadModule / UpdateModule / CreateModule的对称结构与后端统一 CRUD 接口一一对应样式frontend/src/style/partials/提供auth.css、erp.css、customAntd.css、layout.css、navigation.css等模块化样式frontend/src/style/app.css作为入口。这种后端统一 CRUD 抽象 前端对称模块结构的设计使得新增业务模块时前端工作大幅简化也是界面在不同屏幕尺寸下保持一致体验的工程基础useResponsive钩子与ant-design/pro-layout提供响应式支撑。快速开始从克隆到本地运行官方安装指引见 INSTALLATION-INSTRUCTIONS.md核心步骤如下适用于 Node 20.9.0 / npm 10.2.4 环境克隆仓库并进入目录git clone https://github.com/idurar/idurar-erp-crm.git cd idurar-erp-crm准备 MongoDB注册 MongoDB 账号并创建集群记下Connect to your application URI将password替换为自己的密码并把当前 IP 加入数据库 IP 白名单。配置环境变量在backend目录下准备.env文件将其中一行改为DATABASEyour-mongodb-uri安装后端依赖并初始化cd backend npm install npm run setupnpm run setup会执行 setup.js连接数据库、创建默认管理员邮箱adminadmin.com、密码admin123角色owner、批量写入默认设置defaultSettings/**/*.json、插入默认税率Tax 0%与默认付款方式。启动后端服务npm run dev安装并启动前端新开终端cd frontend npm install npm run dev前端默认通过 Vite 提供服务可在浏览器访问本地开发地址。若前端启动时遇到 OpenSSL 相关报错error:0308010C:digital envelope routines::unsupported常见于较旧的 Node 17 环境官方指引给出两种解法升级到 Node.js v20或启用 legacy OpenSSL provider例如 Unix 系环境执行export NODE_OPTIONS--openssl-legacy-provider后再运行npm run dev。结语IDURAR 的架构启示回看官方功能文档与仓库实现的对应关系可以得出IDURAR 的核心价值不在于所有业务域都已完整落地而在于其架构模式的普适性——一套以 Mongoose 模型 统一 CRUD 路由工厂 Ant Design 前端模块为骨架的 MERN 工程范式。已经落地的发票、收款、客户三大模型构成了销售与财务闭环的主动脉采购、库存、项目等官方文档定义的能力域则可以在这一范式中以较低成本逐步扩展。对希望研究开源 ERP/CRM 实现或进行二次开发的读者而言从 Client.js、Invoice.js、Payment.js 三个模型入手再对照 appApi.js 的路由工厂与前端modules/的对称目录即可快速掌握 IDURAR 的完整扩展路径。赞分享后端前端企业应用CRM【免费下载链接】idurar-erp-crmFree Open Source ERP CRM Software Accounting Invoicing | Node.Js React项目地址https://gitcode.com/gh_mirrors/id/idurar-erp-crm点击查看免费下载相关推荐IDURAR ERP CRM 全功能解析基于 MERN 技术栈的开源 ERP/CRM 软件IDURAR ERP CRM 全功能解析基于 MERN 技术栈的开源 ERP/CRM 软件 IDURAR 是一款开源Fair Code 协议的 ERP/C后端前端企业应用CRMIDURAR 开源 ERP CRM 软件深度解析基于 MERN 技术栈的功能全景与技术实现IDURAR 开源 ERP CRM 软件深度解析基于 MERN 技术栈的功能全景与技术实现 IDURAR 是一款免费开源的 ERP企业资源计划与 CRM后端前端企业应用CRMIDURAR 开源 ERP/CRM 软件功能全景指南基于 MERN 技术栈的免费开源实现IDURAR 开源 ERP/CRM 软件功能全景指南基于 MERN 技术栈的免费开源实现 本文以 IDURAR 官方功能文档土耳其语版 features/t后端前端企业应用CRM上一篇探索Cake构建自动化的未来下一篇开源项目 Roy 使用教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
