Python desktop application for inventory control by operational areas, with full traceability, expiration control, and role-based management.
This project was developed to improve internal inventory management on vessels, centralizing stock control by operational branches (engine room, bridge, deck, galley) and reducing errors derived from scattered manual control.
The solution allows work with users and permission levels (admin, superior, high, low), category and product management, stock in/out registration, movement history visualization, and easier internal decision-making with real data.
Expiration control was added with alerts to anticipate due dates, and minimum-stock warnings to avoid supply shortages. The result is a practical tool to professionalize daily operations, increase traceability, and optimize onboard work, allowing teams to know material status at all times, obtain historical data, and project trends (predictive maintenance, early purchasing, planning).
What we did
- Login with users and access levels (admin, superior, high, low).
- Control by operational branches: engine room, bridge, deck, galley.
- Full CRUD for categories and products.
- Stock movements (+/-) with history and audit.
- Undo/redo for recent movements (operational safety against mistakes).
- Filters by category, minimum stock, and expiration.
- Visual alerts for critical stock, expired, or near-expiry items.
- Persistence in Excel (
stock.xlsx) and users in JSON.
Audit / traceability (detail)
The application includes an audit system oriented to real operation:
- Each movement is recorded with date and time, responsible user, operational branch, movement type (in/out), product/category, quantity, and observations/reason (when applicable).
- It allows querying the full history of actions to identify what happened, when, and who performed it, improving transparency and reducing operational incidents.
- The history supports internal reviews, consumption pattern detection, and discrepancy support (for example, differences between expected stock and real stock).
Ease of updates and adaptation
The software is designed so improvements and updates are easy, allowing quick adaptation to specific operations:
- Adjust interface, fields, validations, and flows according to vessel type or work method.
- Add new branches, categories, alert rules, or specific modules (consumption per equipment, maintenance, etc.) without rebuilding the project base.
This makes it an evolvable tool, prepared to grow with operations.
Why Excel as database (and its practical advantage)
Excel is used to store and maintain data because it provides a very useful operational advantage:
- With an internet connection, the file can be easily shared (for example, through cloud storage), allowing inventory to be consulted by personnel who do not need to be physically at the workplace.
- It makes it easier to compare vessels, share consumption, or analyze differences between stocks from multiple units, and keep centralized control without forcing complex system installations.
- In addition, Excel allows opening/exporting data with standard tools, which speeds up reviews and reporting without friction.
Value for internal management
- Centralizes inventory and avoids scattered manual control.
- Reduces errors and improves traceability by user and date.
- Prevents stock shortages and helps plan replenishment.
- Provides useful historical data for data-based decisions (consumption, turnover, planning).
- Enables collaboration and comparison between vessels by easily sharing the Excel file.
Technologies
Python, Tkinter, pandas, tkcalendar.
Improvement path / continuity
- Improve interface for greater speed and intuition.
- Automated reports (daily/weekly/monthly): consumption, turnover, alerts, deviations.
- Strengthen the engine-room module with sensorization (IoT).
- Integrate oil-change control and per-equipment consumption.
- Evolve toward data-driven preventive maintenance.
- Per-component history (usage, consumption, interventions, service life) to optimize costs and reliability.