Project Overview
A full-stack web application for real-time inventory tracking. Supports multiple user roles (Admin, Manager, Staff), automated low-stock alerts, purchase order generation, and supplier management — all in a clean responsive UI built with Flask and Bootstrap.
3User Roles
Real-timeStock Updates
AutoLow-Stock Alerts
PDFPO Generation
Core Features
- Stock Management: Add, update, transfer stock between locations
- Low-Stock Alerts: Auto email when item drops below reorder threshold
- Purchase Orders: Generate PDF POs from low-stock items in one click
- Supplier Portal: Track supplier contacts, lead times, unit costs
- Reports: Stock movement history, valuation reports, fast/slow movers
- Role-Based Access: Staff see only their location; Managers see all
Flask Backend
Python
from flask import Flask, render_template, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager, login_required, current_user
from functools import wraps
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://user:pass@localhost/inventory_db'
db = SQLAlchemy(app)
class Product(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
sku = db.Column(db.String(50), unique=True)
quantity = db.Column(db.Integer, default=0)
reorder_qty = db.Column(db.Integer, default=10)
unit_cost = db.Column(db.Float)
supplier_id = db.Column(db.Integer, db.ForeignKey('supplier.id'))
@app.route('/api/stock/update', methods=['POST'])
@login_required
def update_stock():
data = request.json
product = Product.query.get_or_404(data['product_id'])
product.quantity += data['quantity_delta']
db.session.commit()
if product.quantity < product.reorder_qty:
send_low_stock_alert(product) # async email via celery
return jsonify({'status':'ok','new_qty':product.quantity})Outcome
Deployed for a small retail business managing 500+ SKUs across 3 locations. Eliminated manual spreadsheet tracking and reduced stockout incidents by 40% in the first month through proactive alerts.
FlaskMySQLSQLAlchemy
BootstrapHTML/CSS/JSPython