Local-first desktop grocery inventory and sales manager (Tkinter + ttkbootstrap + SQLite).
Project description
Grocery Mart Inventory Manager
A local-first desktop grocery inventory and sales manager built with Python, Tkinter, ttkbootstrap, and SQLite.
Features
- Inventory: products, stock levels, expiry, barcode, supplier, GST% and Tax% per product
- Sales: multi-item invoices, live invoice preview, PDF generation, invoice browser + print last invoice
- Analytics: KPIs, stock breakdown, sales trend, top products, exportable sales report
- Exports: Excel/CSV for products, sales, suppliers
- Activity monitor (audit log) with CSV export
- Session lock mode
- Optional barcode scanning mode (manual entry + camera preview)
- Global and page-level keyboard shortcuts (press
F1in the app)
Requirements
- Python 3.11+ (3.12 recommended)
Setup
- Install dependencies:
pip install -r requirements.txt
- Initialize / migrate the database (optional; the app auto-creates tables on first run):
python init_db.py
- Run the app:
python main.py
Demo dataset (optional)
Seed sample suppliers/products/sales:
python scripts/seed_demo.py
Recreate the database and seed clean demo data:
python scripts/seed_demo.py --reset
Camera barcode scanning (optional)
The Inventory screen supports camera barcode scanning. It is optional because camera + barcode libraries can pull in native dependencies (and may upgrade NumPy in some environments).
Install the base app first:
pip install -r requirements.txt
Then (optional) install camera scanning deps:
pip install -r requirements-camera.txt
Notes:
- Windows
pyzbarmay also require the ZBar library available on PATH. - If installing camera deps upgrades NumPy and breaks other compiled packages (e.g. matplotlib), use a clean virtual environment/conda environment for this app.
Login
- Default admin user:
admin - Default admin password:
admin
After logging in, change the password in Settings -> Change Password.
Docs
docs/USAGE.md– how to use each screen + shortcutsdocs/DESCRIPTION.md– architecture, modules, and troubleshooting notes
Data & privacy
This is a local-first app:
- Data is stored on your machine in
grocery_inventory.db - Generated invoices are saved under
invoices/
Contributing
See CONTRIBUTING.md. CI runs via GitHub Actions in .github/workflows/ci.yml.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file grocery_mart_application-0.1.0.tar.gz.
File metadata
- Download URL: grocery_mart_application-0.1.0.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc0cd124c2fb9f5eb10e18871fdbc53a73ae238684acfa654298ced3095abd41
|
|
| MD5 |
8cfa3261a562833e502948dc73e05e07
|
|
| BLAKE2b-256 |
500ce7d880091fc3dd75c3f38f77241e973d6a62e0ead30feb51bec58cdc7502
|
File details
Details for the file grocery_mart_application-0.1.0-py3-none-any.whl.
File metadata
- Download URL: grocery_mart_application-0.1.0-py3-none-any.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c1299182773e31a242019debd677fd2655f5f169a9afc3ae7deeca5e01a9992
|
|
| MD5 |
642e2f478b265aea203214dfa9d8e4e1
|
|
| BLAKE2b-256 |
de42b8514d5b88816927fa0b8c3e5178fcbd3a91ca8db796be41fab53e3c5801
|