You have a spreadsheet. We have opinions about it.
IMS is a Flask app that turns a boring CSV into something you can actually use: who's low on stock, what's about to expire, revenue by row, and a forecast trained on your numbers, not a demo file from 2019.
No login circus. No enterprise sales deck. Upload a file, poke around, train a model when you feel brave.
Because "I'll check the inventory later" is how shelves go empty and yogurt goes bad. IMS fixes that.
| Feature | What it actually does |
|---|---|
| 🏠 Home | KPIs at a glance + drag-and-drop CSV upload |
| 📦 Inventory | Restock nudges and expiry radar |
| 📊 Analytics | Revenue by row, top/bottom movers, Chart.js from your real data |
| 🔮 Forecast | Three recent stock levels in, one estimate out (scikit-learn) |
Ships locally or on Vercel. Paths adapt automatically when VERCEL is set.
git clone https://github.com/jonathanrao99/Inventory-Management-System
cd Inventory-Management-System
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python app.pyOpen http://127.0.0.1:5000 and feed it data_set/data.csv, or your own file with the same column shape.
Want forecasting? Pull in the ML extras:
pip install -r requirements-ml.txt
| Path | Purpose |
|---|---|
app.py |
Routes, JSON API, your new best friend |
paths.py |
"Am I on a laptop or a postage-stamp server?" |
Prediction.py |
Training pipeline for the forecast |
public/static/ |
CSS + JS (Vercel-friendly public/) |
templates/ |
Jinja2 + base.html layout |
data_set/data.csv |
Sample loot for testing |
Tweak behavior with environment variables. No config files, no drama.
| Variable | Default | What it does |
|---|---|---|
APP_NAME |
IMS |
Short label in the header |
APP_FULL_NAME |
Inventory Management System |
Long name next to the mark |
VERCEL |
(unset) | Switches data/model scratch space to /tmp |
Locally -- the quick start above is all you need.
Vercel -- set the VERCEL environment variable in your project settings and push. The app detects it and reroutes file I/O to /tmp automatically.
PRs and issues are welcome! A few ground rules before you dive in:
- Fork + branch from
mainwith a name that hints at the change:fix/upload-timeout,feat/dark-mode, you get the idea. - Keep scope tight. One logical change per PR beats a kitchen-sink diff every time.
- Smoke-test your touches -- upload flow, inventory table, analytics chart, forecast + train.
- Describe what and why in the PR body. Reviewers should nod, not squint.
Filing a bug? Include your OS, Python version, and what you clicked before the world ended.
Released under the MIT License -- use it, break it, fix it, ship it. Just keep the copyright notice and license text with your copies.
Full legalese in LICENSE. Copyright (c) 2024 Jonathan Thota.
Now go count some boxes. Responsibly.