$ show idurar/idurar-erp-crm
IDURAR is a free, open-source ERP and CRM application built on the MERN stack (MongoDB, Express.js, React.js, Node.js) with Ant Design and Redux. It provides modules for invoice management, payment processing, quote generation, customer relationship management, inventory tracking, and financial reporting. The system features multi-language support (44 languages), PDF generation for business documents, role-based access control, and a responsive user interface. The architecture separates concerns with a RESTful API backend and a modular frontend utilizing React, Redux for state management, and Ant Design for UI components.
The LLM identified 4 files worth highlighting for reuse:
This module exports functions for each CRUD operation (create, read, update, delete, list, etc.) that can be used to generate standardized controllers for any Mongoose model. It reduces boilerplate by encapsulating common logic (validation, error handling, response formatting) and allows developers to create CRUD endpoints for new models by simply importing and using these functions with the target model.
This middleware provides a strategy pattern for file uploads, supporting multiple storage backends (local disk, AWS S3, DigitalOcean Spaces). The `DoSingleStorage` function selects the appropriate storage engine based on configuration, and each storage engine (e.g., `LocalSingleStorage`) handles the actual file upload. This abstraction allows the application to switch storage providers without changing the upload logic.
This component generates a form dynamically based on a configuration object that defines fields, validation rules, and layout. It uses Ant Design's Form component but abstracts the field creation, allowing developers to define complex forms with minimal JSX. The configuration-driven approach makes it reusable across different modules (e.g., invoice form, customer form) without rewriting form logic.
A reusable React component for a dropdown that loads options asynchronously (e.g., from an API endpoint). It handles loading states, error states, and option selection, making it suitable for any scenario where dropdown data is fetched remotely. The component is isolated, requiring only the API URL and optional parameters to function.