This project is a Real-Time Inventory Management System designed to track and update inventory levels for businesses in real time. It includes role-based access for Admins and Employees, providing features like inventory tracking, stock movement analysis, low-stock alerts, AI-powered inventory recommendations, customer analytics, supplier management, and advanced reporting capabilities. The system is built using the MERN stack (MongoDB, Express.js, React.js, and Node.js) with Python-based machine learning models.
- Add, edit, and delete products
- View and manage inventory details
- Low-stock alerts for products
- Generate stock movement and sales reports
- Role management for users (add/edit/delete employees)
- AI-powered inventory recommendations and product bundling suggestions
- Customer analysis and segmentation
- Supplier performance analytics
- Advanced monthly and yearly reports
- Multiple bill generation capability
- Smart discount suggestions based on product expiry dates
- Fraud bill detection system
- View inventory list with stock levels
- Low-stock alerts
- Real-time stock updates
- Access to inventory recommendations
- Generate multiple bills
- View customer analytics
- Access expiry-based discount suggestions
- React.js: For building the user interface
- Material-UI: For UI components and styling
- Node.js: Server-side logic
- Express.js: REST API framework
- Python: Machine learning models for inventory recommendations, customer analysis, and fraud detection
- MongoDB: For storing product details, user data, inventory records, customer analytics, and supplier information
- Node.js installed on your system
- MongoDB running locally or on a cloud service (e.g., MongoDB Atlas)
- Python 3.x with required ML libraries (scikit-learn, pandas, numpy, tensorflow)
- Basic knowledge of JavaScript, Python, and the MERN stack
- Clone the repository:
git clone https://github.com/Abhinay2206/ims.git
cd ims- Set up environment variables:
- Create a
.envfile in the root directory - Add the following variables:
- Create a
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
PORT=5000
NODE_ENV=development
PYTHON_API_PORT=5001
- Install dependencies:
# Install Node.js dependencies
npm install
# Install Python dependencies
cd python-model
pip install -r requirements.txt- Start the MongoDB service:
# If using local MongoDB
mongod- Start the backend server:
# From the root directory
npm run server- Start the Python ML service:
# From the ml-service directory
python app.py- Start the frontend development server:
# From the root directory
npm run client- Access the application:
- Frontend:
http://localhost:5173 - Backend API:
http://localhost:5017 - ML Service:
http://localhost:5001
- Frontend:
## Contributing
We welcome contributions to improve the Inventory Management System! Here's how you can contribute:
### Development Process
1. Fork the repository
2. Create a feature branch:
```bash
git checkout -b feature/your-feature-name
-
Follow the coding standards:
- Use ESLint for JavaScript code
- Follow PEP 8 for Python code
- Write meaningful commit messages
- Add comments for complex logic
- Include unit tests for new features
-
Testing requirements:
- Write unit tests for new features
- Ensure all existing tests pass
- Test across different browsers
- Verify mobile responsiveness
-
Update documentation:
- Add relevant comments to your code
- Update README.md if needed
- Document any new environment variables
- Add API documentation for new endpoints
-
Submit your PR:
- Provide a clear PR description
- Link related issues
- Include screenshots for UI changes
- List any breaking changes
-
Code Review:
- Address reviewer comments
- Maintain a professional discussion
- Make requested changes promptly
When reporting issues, include:
- Clear issue description
- Steps to reproduce
- Expected vs actual behavior
- Screenshots if applicable
- Environment details
- Related logs or error messages
- Use functional components with hooks
- Follow Material-UI design patterns
- Implement responsive designs
- Use TypeScript for new components
- Follow the established state management pattern
- Follow RESTful API principles
- Implement proper error handling
- Add input validation
- Maintain API documentation
- Use async/await for asynchronous operations
- Document model training procedures
- Include model performance metrics
- Save model artifacts properly
- Implement proper error handling
- Add logging for monitoring
- Never commit sensitive data
- Implement proper input validation
- Use parameterized queries
- Follow security best practices
- Regular dependency updates
- Implement rate limiting
- Use proper authentication
-
Version Control:
- Follow semantic versioning
- Update CHANGELOG.md
- Tag releases appropriately
-
Deployment:
- Test in staging environment
- Perform security checks
- Update documentation
- Create release notes
-
Post-Release:
- Monitor for issues
- Address critical bugs
- Update status reports