后端前端企业应用CRM【免费下载链接】idurar-erp-crmFree Open Source ERP CRM Software Accounting Invoicing | Node.Js React项目地址https://gitcode.com/gh_mirrors/id/idurar-erp-crm点击查看免费下载导读IDURAR 是一款基于现代 MERN 技术栈Node.js / Express.js / MongoDB / React.js构建的免费开源 ERP企业资源计划与 CRM客户关系管理软件覆盖发票Invoice、报价Quote、会计Accounting等核心业务。本文以 features/mk_mk_фрее_опен_сорсе_ерп_црм_софтвер.md 中列出的功能清单为骨架结合当前仓库的模型定义、路由注册、控制器与中间件实现逐模块解析 IDURAR 的能力边界与底层实现帮助读者理解该系统的模块划分、数据模型设计与可扩展架构并可直接在仓库源码中按路径追踪验证。一、技术栈与总体架构IDURAR 文档明确其底层为 mern-stack即 MongoDB、Express.js、React.js 与 Node.js 的组合并在此基础上引入 Redux 管理前端状态、Ant DesignAntD构建界面组件。这一架构在仓库中可以得到完整印证后端基于 Express 构建入口见 backend/src/app.js该文件注册了 CORS、Cookie 解析、JSON 请求体解析、gzip 压缩compression等中间件并挂载了四组路由/api下的认证路由coreAuthRouter与业务路由coreApiRouter、erpApiRouter其中业务路由均经过adminAuth.isValidAuthToken鉴权中间件/download下载路由与/public公共路由最终通过 backend/src/handlers/errorHandlers.js 统一处理 404 与生产环境错误。前端入口为 frontend/src/main.jsx组件由 frontend/src/RootApp.jsx 聚合状态管理采用 Redux模块化拆分见 frontend/src/reduxauth、crud、erp、settings、adavancedCrud 等切片。前端 UI 大量使用 Ant Design 组件例如 frontend/src/components/DataTable/DataTable.jsx、frontend/src/components/CrudModal/index.jsx 等支撑文档所承诺的“直观、响应式、用户友好”界面。后端 API 采用高度约定的“实体驱动”路由生成方式backend/src/models/utils/index.js 通过 glob 扫描src/models/appModels/下的模型文件自动推导出实体名小写、模型名首字母大写与控制器名生成routesListbackend/src/routes/appRoutes/appApi.js 再据此为每个实体统一注册 RESTful 路由/{entity}/create POST 创建 /{entity}/read/:id GET 读取单条 /{entity}/update/:id PATCH 更新 /{entity}/delete/:id DELETE 删除 /{entity}/search GET 搜索 /{entity}/list GET 分页列表 /{entity}/listAll GET 全量列表 /{entity}/filter GET 过滤 /{entity}/summary GET 汇总统计此外对invoice、quote、payment三个实体额外注册/{entity}/mail邮件发送接口对quote额外注册convert/:id报价转发票接口。这意味着只要在appModels目录新增一个 Mongoose 模型系统就会自动获得一整套完整的 CRUD 后端 API这是 IDURAR 可扩展性的核心机制。控制器本身由 backend/src/controllers/middlewaresControllers/createCRUDController/index.js 工厂函数生成并校验模型确实存在于modelsFiles列表。二、用户管理与权限控制Управување со корисници文档要求系统具备用户账户的增删改查、基于角色的访问控制以及认证/授权机制。仓库中的实现对应如下认证中间件所有业务 API 由 backend/src/controllers/coreControllers/adminAuth/index.js 生成的isValidAuthToken中间件保护它来自 backend/src/controllers/middlewaresControllers/createAuthMiddleware 模块登录、登出、忘记密码、重置密码、邮件发送等流程分别实现在该目录下的login.js、logout.js、forgetPassword.js、resetPassword.js、sendMail.js与isValidAuthToken.js中。用户模型backend/src/models/coreModels/Admin.js 定义了管理员 Schema包含email小写化、必填、name、surname、photo、role默认owner枚举仅owner、enabled、removed等字段密码字段并不直接存在于此模型中而是独立存放于 backend/src/models/coreModels/AdminPassword.js这一分离设计便于单独管理密码凭据。账户管理 API核心路由 backend/src/routes/coreRoutes/coreApi.js 注册了管理员读取/admin/read/:id、密码更新/admin/password-update/:id、个人资料密码更新/admin/profile/password与资料更新/admin/profile/update支持头像图片上传等接口。前端对应 frontend/src/modules/ProfileModule含密码修改弹窗、头像上传等组件页面入口见 frontend/src/pages/Profile.jsx。三、客户关系管理 CRMУправување со односите со клиентите文档描述的 CRM 能力包括客户/潜在客户联系人管理、销售机会生成与资格认定、沟通历史管理、日程安排与通知提醒。当前仓库落地最完整的是客户主数据管理客户模型backend/src/models/appModels/Client.js 定义字段name必填、phone、country、address、email、createdBy创建人关联 Admin、assigned负责人关联 Admin、removed、enabled默认true、created与updated时间戳并启用mongoose-autopopulate自动填充关联。客户 CRUD 与统计客户控制器位于 backend/src/controllers/appControllers/clientController其中 summary.js 展示了典型的“汇总统计”实现通过 MongoDB Aggregation 管道$facet一次性计算总客户数、当期支持week/month/year三种粒度非法类型返回 400新增客户数并通过$lookup关联 Invoice 集合统计“活跃客户”有未删除发票的客户最终输出新增占比与活跃占比。前端 CRM 页面见 frontend/src/pages/Customer/index.jsx 与 frontend/src/pages/Customer/config.js。从源码结构看文档中提及的销售机会leads管线、日程提醒等功能在当前仓库中尚未形成独立后端模型属于产品规划中的能力边界读者应区分“文档愿景”与“当前已实现功能”。四、销售管理Управување со продажбите销售模块的核心载体是发票Invoice仓库中围绕其构建了完整闭环发票模型backend/src/models/appModels/Invoice.js 字段覆盖业务全流程number与year编号体系、date与expiredDate到期日、client关联客户并自动填充、items行项目含itemName、description、quantity、price、total、taxRate/subTotal/taxTotal/total税额与合计、currency默认NA、discount、credit、payment关联付款记录、paymentStatusunpaid/paid/partially、isOverdue、statusdraft/pending/sent/refunded/cancelled/on hold、recurringdaily/weekly/monthly/annually/quarter、converted记录从 Quote/Offer 转换来源、pdf与files附件等。从该 Schema 可以看出“报价转发票”“周期性发票”“逾期标记”“部分付款”等销售场景均有数据结构支撑。发票控制器backend/src/controllers/appControllers/invoiceController 提供 create/read/update/remove/paginatedList/summary/sendMail/schemaValidate 等实现sendMail.js 当前返回提示信息邮件功能保留在 Premium 版本。前端闭环frontend/src/modules/InvoiceModule 下包含创建CreateInvoiceModule、表格InvoiceDataTableModule、读取ReadInvoiceModule、更新UpdateInvoiceModule、收款登记RecordPaymentModule五个子模块页面路由见 frontend/src/pages/InvoiceInvoiceCreate/InvoiceRead/InvoiceUpdate/InvoiceRecordPayment。收款登记frontend/src/modules/InvoiceModule/RecordPaymentModule/index.jsx 通过 Redux erp 切片读取当前发票并派发recordPayment动作在发票详情页内联完成收款登记数据由 backend/src/models/appModels/Payment.js 与 paymentController 支撑。文档还提到“库存跟踪与每笔销售后更新库存水平”“与主流支付网关集成”。从当前仓库看库存Inventory仅有前端表单 frontend/src/forms/InventoryForm.jsx 与后端 backend/src/middlewares/inventory/generateUniqueNumber.js 等骨架支付网关集成同样未在当前开源代码中实现应视为规划项而非已实现能力。五、采购管理Управување со купувањето文档列出的采购能力包括采购订单管理、供应商信息与关系维护、收货与库存更新、采购发票与供应商付款处理。从当前仓库源码结构看backend/src/models/appModels/目录下仅有Client.js、Invoice.js、Payment.js三个业务模型并未发现独立的供应商Supplier、采购订单Purchase Order模型前端 frontend/src/forms 与 frontend/src/pages 中也未提供采购模块页面因此采购管理、供应商关系、收货入库等在本开源版本中属于文档愿景。结合“实体自动生成路由”的架构见第一节未来若在appModels中新增采购相关模型即可自动获得对应 CRUD API这从侧面印证了系统的扩展路径。六、库存管理Управување со залихата文档提及的库存能力包括库存水平跟踪、转移与调整、低库存自动通知与补货采购单生成、条码扫描、商品分类/属性/定价。仓库中可确认的库存相关线索后端中间件 backend/src/middlewares/inventory/generateUniqueNumber.js 提供库存实体编号生成逻辑前端存在库存表单 frontend/src/forms/InventoryForm.jsx但仓库没有独立的库存/商品 Mongoose 模型发票行项目Invoice.items直接以内嵌对象itemName、quantity、price、total存储未关联商品表结论库存管理与条码扫描、低库存告警等能力目前处于规划/骨架阶段尚未形成完整的后端数据闭环。七、财务管理Финансиско управување财务能力在仓库中主要体现在付款Payment与发票状态流转两个维度付款模型backend/src/models/appModels/Payment.js 与发票通过payment字段ObjectId 数组ref 指向 Payment双向关联发票的paymentStatus枚举unpaid/paid/partially即对应用户在发票上登记收款后的状态推进。付款管理控制器 backend/src/controllers/appControllers/paymentController 提供 create/update/remove/sendMail/summary 等能力前端模块 frontend/src/modules/PaymentModule 提供付款表格PaymentDataTableModule、读取ReadPaymentModule与更新UpdatePaymentModule页面见 frontend/src/pages/Payment。付款统计summary.js 与客户汇总类似基于聚合管道产出按时间粒度的付款汇总数据供仪表盘使用。PDF 单据backend/src/pdf 目录内置 Invoice/Quote/Payment/Offer 四套 Pug 模板backend/src/controllers/pdfController/index.js 与 backend/src/handlers/downloadHandler/downloadPdf.js 负责生成并下载 PDF 单据对应/download下载路由。文档提到的总账General Ledger、应收应付账龄、资产负债表/损益表等财务报告以及主流财务软件集成当前开源仓库中未发现对应模型或页面属于规划项。八、项目管理Управување на проекти文档描述的项目管理能力项目创建与跟踪、任务分配、截止日期、进度跟踪、资源分配、成本跟踪、文档共享与实时协作在当前仓库中没有对应的后端模型、控制器或前端模块。从前端 frontend/src/pages 与后端appModels的完整目录清单看均不存在 project/task 相关实现。该部分应被理解为 IDURAR 产品路线图中的功能愿景而非当前开源版本的已交付能力——这一点对评估技术选型非常重要读者不应依据功能清单误判当前版本能力。九、报表与数据分析Извештаи и аналитика报表与 KPI 分析是当前开源版本中实现最实质化的模块之一后端汇总接口每个业务实体都通过通用 CRUD 工厂获得summary端点见第一节路由表。以客户为例clientController/summary.js 使用$facet聚合输出“新增客户占比”与“活跃客户占比”发票、付款的汇总实现位于对应 controller 目录的summary.js。前端仪表盘frontend/src/modules/DashboardModule 提供仪表盘页面内含 SummaryCard.jsx、PreviewCard.jsx、CustomerPreviewCard.jsx 与 RecentTable 等组件将各实体的 summary/list 数据可视化为卡片与最近记录表格。前端统计工具frontend/src/utils/calculate.js 提供金额计算辅助函数frontend/src/utils/statusTagColor.js 将发票/付款状态映射为 AntD Tag 颜色服务于列表与报表的可视化呈现。文档提到的“自定义报表定义”“数据可视化技术”在当前版本中主要体现为上述固定汇总与仪表盘暂不支持用户自定义报表构建器。十、集成与定制能力Интеграција и прилагодување设置中心设置即定制入口IDURAR 将公司信息、发票、报价、货币格式等均抽象为“设置项”。后端 backend/src/middlewares/settings 提供 loadSettings/listAllSettings/listBySettingKey/readBySettingKey/updateBySettingKey/increaseBySettingKey 等中间件核心路由 coreApi.js 注册了/setting/readBySettingKey/:settingKey、/setting/listBySettingKey、/setting/updateBySettingKey/:settingKey?、/setting/updateManySetting等 API并支持设置项图片上传/setting/upload/:settingKey?。默认设置值定义在 backend/src/setup/defaultSettingsappSettings、clientSettings、companySettings、financeSettings、invoiceSettings、moneyFormatSettings、quoteSettings 共七个 JSON 文件安装时由 backend/src/setup/setup.js 写入数据库。前端设置模块frontend/src/modules/SettingModule 对应实现公司设置、财务设置、货币格式设置、公司 Logo 设置与通用设置五个页面页面路由见 frontend/src/pages/Settings。这种“设置项驱动”的架构即文档所述“按具体业务需求定制应用功能与外观”的主要落地方式。API 与 Webhook文档承诺提供 API/Webhook 以便与其他系统交换数据。仓库后端统一通过 RESTful API 暴露全部业务能力第一节路由表并以 JSON 响应包裹success/result/message结构但当前开源版本未发现 webhook 注册与投递的实现代码。第三方集成文档提及的邮件营销工具、CRM 平台等第三方集成以及邮件发送invoiceController/sendMail.js 返回“Upgrade to Premium”当前保留在商业版本中。十一、用户友好界面Кориснички пријателски интерфејсAntD React 组件体系前端大量复用 Ant Design 组件并在此基础上二次封装了可复用的业务组件frontend/src/components 下的 DataTable、CreateForm、UpdateForm、ReadItem、SearchItem、DeleteModal、CrudModal、AutoCompleteAsync、SelectAsync、MoneyInputFormItem、TabsContent、SidePanel 等构成了统一且一致的操作界面。布局体系frontend/src/layout 提供 AuthLayout认证、DashboardLayout仪表盘、ErpLayout业务、SettingsLayout设置、ProfileLayout个人资料等多套布局frontend/src/apps 中的 Header顶部栏与 Navigation导航菜单实现全局导航。响应式与国际化frontend/src/hooks/useResponsive.jsx 处理不同屏幕尺寸的适配frontend/src/locale 提供多语言翻译翻译文件见 en_us.js与 AntD 组件本地化支撑文档承诺的“跨设备一致的视觉效果”。认证页面frontend/src/modules/AuthModule/index.jsx 与 frontend/src/forms 中的 LoginForm、RegisterForm、ForgetPasswordForm、ResetPasswordForm 共同实现登录注册流程配合后端 backend/src/controllers/middlewaresControllers/createAuthMiddleware 完成鉴权闭环。十二、部署与上手路径文档本身聚焦功能清单但要在本地验证上述能力可参考 README.md 与 INSTALLATION-INSTRUCTIONS.md 的完整流程核心步骤为克隆仓库 → 创建 MongoDB 集群 → 编辑环境变量文件前端 frontend/temp.env 为模板→ 更新 MongoDB URI → 安装后端依赖 → 运行 backend/src/setup/setup.js 初始化默认设置与管理员 → 启动后端backend/src/server.js→ 安装前端依赖并启动前端frontend/vite.config.js。注意邮件发送、完整采购/库存/项目/总账等能力为商业Premium版本或规划中的功能开源版本以 Invoice、Quote、Payment、Customer 四大实体及配套设置、报表、PDF 输出为核心闭环。结语综合文档清单与仓库源码对照可以确认IDURAR 开源版本已扎实落地了用户认证与管理、客户管理、发票/报价/付款闭环、PDF 单据生成、汇总统计与仪表盘、设置项驱动的定制体系、AntD 统一界面而采购、库存、项目、总账、第三方集成、Webhook 等条目在当前代码中仅存在骨架或尚未实现属于文档愿景与商业版本范畴。其“模型驱动自动生成 CRUD 路由”的架构backend/src/models/utils/index.js backend/src/routes/appRoutes/appApi.js是理解整个系统扩展性的钥匙也是二次开发时最值得借鉴的设计。赞分享后端前端企业应用CRM【免费下载链接】idurar-erp-crmFree Open Source ERP CRM Software Accounting Invoicing | Node.Js React项目地址https://gitcode.com/gh_mirrors/id/idurar-erp-crm点击查看免费下载相关推荐openeuler/Virt-docs与容器集成isula容器技术无缝对接教程openeuler/Virt docs与容器集成isula容器技术无缝对接教程 前往项目官网免费下载 https://ar.openeuler.org/ar后端前端企业应用CRMWSA-Windows-10深度解析Windows 10上原生运行Android应用的终极方案WSA Windows 10深度解析Windows 10上原生运行Android应用的终极方案 你是否曾想过在Windows 10上像运行原生应用一样流畅地使后端前端企业应用CRMIDURAR ERP CRM 项目实战指南基于 MERN 栈与 Ant Design 的开源 ERP/CRM 系统部署与架构解析IDURAR ERP CRM 项目实战指南基于 MERN 栈与 Ant Design 的开源 ERP/CRM 系统部署与架构解析 IDURAR 是一款免费开源后端前端企业应用CRM上一篇3步掌握ARC-AGI用抽象推理挑战你的AI智商下一篇ComfyUI_ControlNet_Aux项目中MeshGraphormer模块的rtree依赖问题解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考