A self-hosted inventory and store management system designed for small businesses. Track products, manage orders, monitor customers, and grow your business.
- Product Management - Add products with variants, track stock levels, get low stock alerts
- Order Management - Manually enter orders from in-store or phone sales
- Customer Tracking - Keep track of your regulars and their purchase history
- Inventory Control - Real-time stock tracking with adjustment history
- Sales Reports - Generate reports to understand what's selling and what's not
- Multi-tenant - Support multiple stores in one installation
- Role-based Access - Control who can view and edit data (owner, manager, staff, viewer)
- Docker Ready - One-command deployment with Docker Compose
- API-First - Complete REST API for integrations and future expansions
NEW! We provide comprehensive demo materials using the Superstore Sales dataset to help new owners learn the platform:
- 📖 DEMO_GUIDE.md - Complete walkthrough using real Superstore data
- 🐍 import_demo_data.py - Automated script to generate demo CSV files
- 📊 Demo CSV Files (generated automatically):
demo_categories.csv- 3 product categories (Furniture, Office Supplies, Technology)demo_products.csv- 100 sample products with realistic pricingdemo_customers.csv- 100 customers with purchase historydemo_orders.csv- 54 orders with various statuses
# 1. Download sample data
# Place sample_superstore.xls in project root
# 2. Generate demo CSV files
python import_demo_data.py
# 3. Follow DEMO_GUIDE.md for complete walkthroughUse Cases: Training new staff, testing features, understanding analytics, preparing demonstrations
- Docker and Docker Compose installed
- Git installed
- At least 2GB of free RAM
- Clone the repository
git clone https://github.com/AKHIL-149/ecom-inventory.git
cd ecom-inventory- Create your environment file
cp .env.example .env-
Edit the .env file and update the following values:
JWT_SECRET- Generate a secure random stringPOSTGRES_PASSWORD- Choose a strong database password
-
Start the application
docker-compose up -d- Run database migrations
docker-compose exec backend npx knex migrate:latest-
Access the application
- Frontend: http://localhost:3002
- Backend API: http://localhost:3001
- Health Check: http://localhost:3001/health
-
Register your account or use demo credentials
- Register: Create a new account at http://localhost:3002/register (automatically creates your store)
- Demo Login: Email:
demo@example.com, Password:password
-
Install PostgreSQL 15+ and Redis 7+
-
Create database
createdb ecom_inventory- Install backend dependencies
cd backend
npm install- Run database migrations
npm run migrate- Start the backend server
npm run dev- Install frontend dependencies
cd frontend
npm install- Create .env file
echo "PORT=3002" > .env
echo "REACT_APP_API_URL=http://localhost:3001/api" >> .env- Start the development server
npm start- Register a new account at http://localhost:3002/register
- Your store will be automatically created during registration
- You'll be logged in immediately after registration
- Customize your store settings (optional)
- Go to Settings → Store Settings
- Update store name, currency, timezone
- Start adding products, customers, and orders
- Navigate to Products page
- Click "Add Product"
- Fill in product details (name, SKU, price, stock)
- Add variants if needed (sizes, colors, etc.)
- Upload product images
- Set low stock threshold for alerts
- Navigate to Orders page
- Click "New Order"
- Select or create a customer
- Add products to the order
- Enter payment and shipping details
- Save the order
- Navigate to Inventory page
- View current stock levels
- See low stock alerts
- Make stock adjustments as needed
- View adjustment history for audit trail
All API requests except login and register require authentication.
# Login
POST /api/auth/login
{
"email": "user@example.com",
"password": "yourpassword"
}
# Returns JWT token to use in subsequent requestsInclude the token in the Authorization header:
Authorization: Bearer YOUR_JWT_TOKEN
# List all products
GET /api/products?storeId=1&page=1&limit=20
# Get single product
GET /api/products/:id
# Create product
POST /api/products
{
"name": "Product Name",
"sku": "PROD-001",
"price": 29.99,
"inventory_quantity": 100,
"store_id": 1
}
# Update product
PUT /api/products/:id
# Delete product (soft delete)
DELETE /api/products/:id
# Adjust stock
POST /api/products/:id/adjust-stock
{
"quantity_change": -5,
"reason": "Sold in store"
}# List orders
GET /api/orders?storeId=1&status=pending
# Create order
POST /api/orders
{
"store_id": 1,
"customer_id": 123,
"items": [
{
"product_id": 456,
"quantity": 2,
"price": 29.99
}
],
"total_amount": 59.98
}
# Update order status
PUT /api/orders/:id
{
"status": "completed"
}# List customers
GET /api/customers?storeId=1
# Create customer
POST /api/customers
{
"store_id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "john@example.com",
"phone": "+1234567890"
}
# Get customer with order history
GET /api/customers/:id/ordersecom-inventory/
├── backend/ # Node.js/Express API
│ ├── src/
│ │ ├── config/ # Database and Redis configuration
│ │ ├── controllers/ # Request handlers
│ │ ├── routes/ # API routes
│ │ ├── services/ # Business logic
│ │ ├── middleware/ # Auth, validation, etc.
│ │ └── server.js # Entry point
├── frontend/ # React application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── context/ # State management
│ │ └── utils/ # Helper functions
├── database/
│ └── migrations/ # SQL migration files
└── docker-compose.yml # Docker configuration
- Node.js 18+ with Express
- PostgreSQL 15+ for data storage
- Redis 7+ for caching
- JWT for authentication
- bcrypt for password hashing
- React 18 with Hooks
- Tailwind CSS for styling
- Recharts for data visualization
- Axios for API calls
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please ensure your code:
- Has no emojis in code or comments
- Uses natural, conversational comments
- Follows the existing code style
- Includes appropriate error handling
All 14 major enhancements have been successfully implemented:
- CSV Export for Orders with date filtering
- Date Range Filter for Orders
- CSV Export for Customers
- CSV Export for Inventory (dual export: stock + adjustments)
- Product Categories Backend (full CRUD)
- Category Management UI with color picker
- Category Filtering in Products
- Dashboard Analytics Charts (Recharts integration)
- Low Stock Visual Indicators (red/yellow/green badges)
- Customer Purchase History View with statistics
- Order Status Timeline (visual stepper)
- Product Image Upload & Preview (base64, up to 5MB)
- Bulk Product Operations (multi-select, delete, categorize, export)
- Advanced Category-Based Analytics (pie chart, filtering)
Status: Production Ready ✅ Documentation: See USER_GUIDE.md and FINAL_ENHANCEMENTS_REPORT.md
- Product management with variants
- Manual order entry
- Customer tracking
- Inventory management
- Basic reporting
- Multi-tenant support
- 14 Major Enhancements (see above)
- Customer-facing online store
- Shopping cart functionality
- Payment gateway integration (Stripe)
- Email notifications
- Barcode/QR code support
- Advanced reporting and analytics
- Mobile app
If you're evaluating inventory management systems, here are excellent open-source alternatives with great documentation:
1. InvenTree
Best for: Parts and component tracking
- Python/Django backend with REST API
- Comprehensive documentation at https://docs.inventree.org/
- Active community support
- Focus: Low-level stock control and part tracking
2. ERPNext
Best for: Full ERP with inventory module
- Python-based with real-time tracking
- Multi-warehouse support
- Extensive integration options
- Documentation: https://docs.erpnext.com/
Best for: Enterprise-level with CRM integration
- Modular architecture with accounting and e-commerce integration
- Real-time visibility and stock tracking
- 2024 improvements for better inventory management
4. OpenBoxes
Best for: Supply chain and warehouse management
- Full source code access
- Zero licensing costs
- Documentation: https://docs.openboxes.com/
- Best 11 Open Source Inventory Systems 2025
- 8 Best Free & Open Source Systems
- 20 Open-source Warehouse Solutions
- GitHub Inventory Topics
| Feature | This System | InvenTree | ERPNext | Odoo |
|---|---|---|---|---|
| E-commerce Focus | ✅ Yes | ❌ No | ||
| Quick Setup | ✅ Docker one-command | |||
| Learning Curve | ⭐⭐ Easy | ⭐⭐⭐ Medium | ⭐⭐⭐⭐ Steep | ⭐⭐⭐⭐ Steep |
| Modern UI | ✅ React/Tailwind | ✅ Vue.js | ||
| Category Analytics | ✅ Built-in | ❌ No | ✅ Yes | ✅ Yes |
| Image Upload | ✅ Base64 | ✅ Files | ✅ Files | ✅ Files |
| Bulk Operations | ✅ Yes | ✅ Yes | ✅ Yes |
This project is licensed under the MIT License - see the LICENSE file for details.
For issues, questions, or suggestions:
- Open an issue on GitHub
- Check existing documentation
- Review closed issues for solutions
Built with passion for small businesses who need simple, effective inventory management.