Metadata-Version: 2.4
Name: grocery-mart-application
Version: 0.1.0
Summary: Local-first desktop grocery inventory and sales manager (Tkinter + ttkbootstrap + SQLite).
Author: atifafzal786
License: MIT License
        
        Copyright (c) 2026 Grocery Mart Inventory Manager contributors
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
        
Project-URL: Repository, https://github.com/atifafzal786/Grocery_mart_Application
Project-URL: Documentation, https://github.com/atifafzal786/Grocery_mart_Application/tree/main/docs
Keywords: inventory,sales,tkinter,sqlite,pos
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: ttkbootstrap>=1.10.1
Requires-Dist: matplotlib>=3.8.0
Requires-Dist: pandas>=2.2.0
Requires-Dist: openpyxl>=3.1.2
Requires-Dist: fpdf2>=2.7.9
Requires-Dist: numpy<2,>=1.26
Provides-Extra: camera
Requires-Dist: opencv-contrib-python>=4.9.0.80; extra == "camera"
Requires-Dist: pyzbar>=0.1.9; extra == "camera"
Provides-Extra: dev
Requires-Dist: ruff>=0.6.0; extra == "dev"
Requires-Dist: black>=24.0.0; extra == "dev"
Requires-Dist: pytest>=8.0.0; extra == "dev"
Dynamic: license-file

# 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 `F1` in the app)

## Requirements

- Python **3.11+** (3.12 recommended)

## Setup

1. Install dependencies:
   - `pip install -r requirements.txt`
2. Initialize / migrate the database (optional; the app auto-creates tables on first run):
   - `python init_db.py`
3. 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 `pyzbar` may 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 + shortcuts
- `docs/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`.

