A full-stack inventory management application for tracking products, suppliers, purchasing, sales invoices, and business reports.
- Product management: create, view, and update products with SKU, category, pricing, quantity, reorder level, supplier link, and optional expiry date.
- Supplier tracking: maintain supplier records and view supplier details.
- Purchase orders & stock receiving: create purchase orders and receive orders to automatically increase stock.
- Invoices / sales tracking: create invoices, mark invoices as paid, and adjust stock based on sales.
- Inventory valuation & profit/loss reporting: view valuation summaries, profit/loss analysis, and top product performance.
- Expiry tracking & low-stock alerts: monitor expired/expiring products and products at/below reorder level.
- React
- React Router
- Axios
- Bootstrap
- Node.js
- Express
- MongoDB
- Mongoose
- JWT (jsonwebtoken)
- bcrypt
- CORS
- dotenv
InventoryControlSystem/
├── backend/ # Express API, controllers, models, routes
├── frontend/ # React client application
└── sample-data/ # Sample JSON data exports
Before running locally, make sure you have:
- Node.js 18+ (or newer LTS)
- npm
- MongoDB (local instance or hosted URI)
git clone https://github.com/CodeShowOff/InventoryControlSystem.git
cd InventoryControlSystemcd backend
npm installCreate a .env file in /backend:
MONGO_URI=mongodb://localhost:27017/inventory_db
PORT=5000
JWT_SECRET=your_jwt_secret_hereIn a separate terminal:
cd frontend
npm install(Optional) create /frontend/.env to point to a custom backend URL:
REACT_APP_API_URL=http://localhost:5000Start backend:
cd backend
npm run devStart frontend:
cd frontend
npm start- Frontend:
http://localhost:3000 - Backend API:
http://localhost:5000
- Register a user account (or log in).
- Use the dashboard to add and manage products.
- Create/manage suppliers and link them to products.
- Create purchase orders and mark them as received to increase stock.
- Create invoices to record sales and update stock.
- Use Reports for inventory valuation, profit/loss, and expiry insights.
- Use Low Stock Alerts to quickly identify products that need restocking.
The sample-data/ folder includes example exported JSON files you can use to seed or inspect data:
Inventory-Data.products.jsoninventory_db.suppliers.json
- CodeShowOff
ISC (as specified in backend/package.json).