Skip to content

komad1na/box-storage-inventory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

17 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Inventory Manager (PyQt6 + SQLite)

Version 2.3.3 | Developer: Nemanja Komadina

A modern desktop inventory management system built with PyQt6 and SQLite. Features dark/light themes, keyboard shortcuts, comprehensive help system, audit logging, multi-language support, and data validation.

Version Python License

๐ŸŽฏ Features

Core Functionality

  • โœ… Box Management: Create, read, update, and delete storage boxes with location tracking
  • โœ… Item Management: Track items with quantities assigned to boxes
  • โœ… Search & Filter: Advanced filtering by name, box, location with database indexes for performance
  • ๐ŸŽจ Dark & Light Themes: Toggle between themes with saved preference (Ctrl+T)
  • โŒจ๏ธ Keyboard Shortcuts: 8 shortcuts for power users (Ctrl+F, Ctrl+N, Ctrl+B, etc.)
  • ๐ŸŒ Multi-Language Support: 6 languages (English, Serbian, German, Spanish, French, Italian)
  • โ“ Comprehensive Help: Built-in help system with 5 sections (F1)

Data Management

  • ๐Ÿ“ CSV Import: Import inventory data with comprehensive validation
    • Pre-import validation checks
    • Preview dialog before committing
    • Error detection and reporting
    • NEW: Export import template with real box names as examples
  • ๐Ÿ“ค CSV Export: Export inventory and audit logs to CSV format
  • ๐Ÿ’พ Database Backups: Automatic backup reminders and manual backup capability
  • ๐Ÿ—„๏ธ SQLite Database: Reliable persistence with foreign key constraints and indexes
  • ๐Ÿ“ Location Tracking: Track physical storage locations for boxes
  • โœ… Data Validation: Input validation prevents empty names, zero quantities, and invalid data

Audit & Logging

  • ๐Ÿ“ Audit Logs: Complete transaction history with detailed change tracking
  • ๐Ÿ• History Tab: View all operations with filtering by action type and entity
  • ๐Ÿ“Š Statistics: Real-time counts of creates, updates, and deletes
  • ๐Ÿ“„ Verbose File Logging: Comprehensive daily log files with timestamps
    • Application lifecycle events
    • Database operations
    • Dialog interactions
    • User actions
    • Language changes
    • Export/Import operations
    • Error tracking
  • ๐Ÿ” Change Tracking: Stores before/after values for all updates

User Experience

  • ๐ŸŽจ Responsive UI: Clean table layouts with alternating row colors
  • ๐ŸŒ— Theme Toggle: Dark and light themes with persistent preference
  • ๐Ÿ”Ž Real-time Search: Instant filtering as you type with Ctrl+F shortcut
  • โšก Quick Actions: In-table edit and delete buttons
  • โš ๏ธ Validation: Input validation with helpful error messages (max length, required fields)
  • ๐Ÿ”” Backup Reminders: Automatic 7-day backup notifications
  • ๐ŸŒ Language Selector: Easy language switching with persistence
  • โŒจ๏ธ Keyboard Navigation: Full keyboard support with 8 shortcuts
  • ๐Ÿ“– Integrated Help: Press F1 for comprehensive documentation

โŒจ๏ธ Keyboard Shortcuts

Speed up your workflow with these keyboard shortcuts:

Shortcut Action Description
Ctrl+F Focus Search Jump to search box in current tab
Ctrl+N Add New Add new box/item (context-aware)
Ctrl+B Backup Create database backup
Ctrl+E Export Export inventory to CSV
Ctrl+T Toggle Theme Switch between dark/light theme
Ctrl+1 Boxes Tab Switch to Boxes tab
Ctrl+2 Items Tab Switch to Items tab
Ctrl+3 History Tab Switch to History tab
F1 Help Open comprehensive help dialog

๐Ÿ“‹ Requirements

  • Python 3.13+
  • PyQt6

Install dependencies:

pip install -r requirements.txt

๐Ÿš€ Getting Started

Installation

  1. Clone or download this repository
  2. Install dependencies:
    pip install PyQt6

Running the Application

python gui.py

๐Ÿ“– Usage Guide

Managing Boxes

  1. Navigate to the Boxes tab
  2. Click + Add Box to create a new storage box
  3. Enter box name and location (e.g., "Garage Shelf 2")
  4. Use the search bar to filter boxes by name or location
  5. Click Edit to modify or Del to remove a box

Managing Items

  1. Navigate to the Items tab
  2. Click + Add Item to create a new inventory item
  3. Select the box, enter quantity, and item details
  4. Use filters to search by item name or box
  5. Edit or delete items using the action buttons

Changing Language

  1. Click Language in the menu bar
  2. Select your preferred language
  3. Restart the application for changes to take effect
  4. Your language preference is saved automatically

Viewing History

  1. Navigate to the History tab
  2. Filter by action type (CREATE/UPDATE/DELETE)
  3. Filter by entity type (ITEM/BOX)
  4. Search by entity name
  5. View detailed change information with timestamps

Importing Data

Getting a Template

  1. Go to Help โ†’ Export CSV Import Template
  2. Save the template file
  3. The template includes:
    • Correct headers
    • Example rows using your actual box names
    • Detailed instructions as comments

Importing Your Data

  1. Go to File โ†’ Import from CSV
  2. Select a CSV file with columns: Item Name, Box, Quantity
  3. Review the preview and validation results
  4. Confirm import if no errors

CSV Format Example:

Item Name,Box,Quantity
Screwdriver,Toolbox A,5
Hammer,Toolbox A,2
Nails,Storage 1,100

Exporting Data

  • Export Inventory: File โ†’ Export Inventory to CSV
  • Export Audit Logs: File โ†’ Export Audit Logs to CSV

Backups

  • Manual Backup: File โ†’ Backup Database
  • Automatic Reminders: Prompted if no backup in 7 days
  • Backups stored in backup/ folder with timestamps

๐ŸŒ Supported Languages

  • ๐Ÿ‡ฌ๐Ÿ‡ง English
  • ๐Ÿ‡ท๐Ÿ‡ธ ะกั€ะฟัะบะธ (Serbian)
  • ๐Ÿ‡ฉ๐Ÿ‡ช Deutsch (German)
  • ๐Ÿ‡ช๐Ÿ‡ธ Espaรฑol (Spanish)
  • ๐Ÿ‡ซ๐Ÿ‡ท Franรงais (French)
  • ๐Ÿ‡ฎ๐Ÿ‡น Italiano (Italian)

๐Ÿ“Š Logging Features

The application logs comprehensive information to help track all operations:

What Gets Logged

  • โœ… Application startup and shutdown
  • โœ… Database initialization and migrations
  • โœ… Database statistics (box count, item count, log count)
  • โœ… Language changes and preferences
  • โœ… All dialog opens (Add/Edit Item, Add/Edit Box)
  • โœ… Dialog save operations with full data
  • โœ… Validation errors and warnings
  • โœ… Backup operations (folder creation, file copying)
  • โœ… CSV export operations (file writing, item counts)
  • โœ… CSV import previews and validations
  • โœ… All CRUD operations (Create, Read, Update, Delete)
  • โœ… Error conditions and exceptions

Log Locations

  • File: logs/inventory_YYYY-MM-DD.log (daily rotation)
  • Console: stdout (real-time viewing during development)
  • Encoding: UTF-8 (supports all languages including Cyrillic)

Log Format

YYYY-MM-DD HH:MM:SS,mmm - LEVEL - MESSAGE

๐Ÿ”ง Troubleshooting

Import Errors

  • Ensure CSV has correct headers: Item Name, Box, Quantity
  • Boxes must exist before importing items
  • Quantities must be positive integers

Database Issues

  • Check that inventory.db has write permissions
  • Review logs in logs/ folder for detailed error messages

๐Ÿ“ Version History

See CHANGELOG.md for detailed version history and changes.

๐Ÿค Contributing

We welcome contributions! Please see CONTRIBUTING.md for:

  • Project structure and architecture
  • Database schema details
  • Development setup instructions
  • Code style guidelines
  • Pull request process

Also read our Code of Conduct before contributing.

๐Ÿ“„ License

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

See LICENSE for full details.

๐Ÿ’ก Tips

  • Press F1 for Help: Comprehensive built-in documentation with all features explained
  • Use Keyboard Shortcuts: Speed up workflow with Ctrl+F (search), Ctrl+N (add), Ctrl+B (backup)
  • Toggle Theme: Press Ctrl+T to switch between dark and light themes
  • Get Import Template: Help โ†’ Export CSV Import Template for easy bulk imports
  • Backup Regularly: Use the automatic backup feature to protect your data
  • Review History: Check the History tab to audit all changes
  • Search Effectively: Use filters and Ctrl+F to quickly find items or boxes
  • Export Reports: Export audit logs for external analysis
  • Check Logs: Review daily log files in logs/ for troubleshooting
  • Track Locations: Use the location field to remember where boxes are stored
  • Switch Languages: Use the Language menu to change the interface language

Built with โค๏ธ by Nemanja Komadina using PyQt6 and SQLite

About

A modern desktop inventory management system built with PyQt6 and SQLite. Features a sleek dark theme interface with comprehensive audit logging, transaction history, and data import/export capabilities.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages