Using a Raspberry Pi for your own inventory management system.
An open-source, inventory management system written in PHP with a MySQL database has no problem operating on a Raspberry Pi. Initially, you’ll only have local network access, but if you want to allow remote web access, you can.
In order to setup a web interface to access, view, and manage the content of your inventory management system you’ll need to set up a LAMP (Linux, Apache, MySQL, PHP) stack on your Raspberry Pi and configure it to work as a web server and set up a basic website which you can access on any device on the same network as your Pi. This is a link to a nice tutorial for setting-up a L.A.M.P. server on your Pi, the WordPress portion is optional, you can stop after installing PHP.
If you plan on having access to your Raspberry Pi through the Internet, you’ll need to configure your router and DDNS settings, or use a service such as dataplicity.io to wormhole to your pi through the web.
Next step is to use an open-source project found on GitHub to start your basic inventory management system.
“OSWA-Inv is a web based Inventory System, that will allow you to keep tracking of the quantity buying and selling price of the products existing in your warehouse or business. When creating a new products, you can set a quantity, buying and selling price.”
- User Management: Groups, Basic Profile, and Change Password
- Categories: For organizing products
- Products: Basic product information, title, quantity, pricing.
- Sales: Sales transactions are individual by product.
- Reports: Daily, Monthly, and Ranged Dates Sales/Profit Report
Install the Basic Inventory Management System Web Application
After updating the Raspberry Pi and setting up the LAMP stack, installation of the inventory application is relatively painless.
If you haven’t done so, use
apt-get to acquire and install the database software:
sudo apt-get install mariadb-server sudo apt-get install php-mysql
When the installation is complete, run a simple security script that comes pre-installed with MariaDB which will remove some insecure default settings and lock down access to your database system. Start the interactive script by running:
Download the source-code package and then you’ll need to extract the contents to the folder. Either rename the folder to the base name now or after you move it to the web root for Apache Web Server found at /var/www/html/
example: sudo cp -R ~/Downloads/inventory-master /var/www/html/inventory
Use the MySQL/MariaDB command line to import the database schema.
Create a database named inventory and import the schema included in the project directory inventory.sql If you haven’t done so, installation is as easy as:
sudo mysql -uroot mysql> CREATE DATABASE inventory; mysql> USE inventory; mysql> source /var/www/html/inventory/inventory.sql mysql>
CREATE USER 'webuser'@localhost IDENTIFIED BY 'p1r4sp';mysql>
GRANT ALL PRIVILEGES ON inventory.* TO 'webuser'@localhost; mysql> FLUSH PRIVILEGES;
Edit the /includes/config.php to match the username and password used to access your database.
The directory containing the project, especially, the uploads directory, must have write permissions on the system and let the web application be run using the www-data account by executing the following commands from the project directory:
sudo chmod -R 775 uploads/ sudo chown -R www-data:www-data *
Edit the header.php file to suit the needs of your organization. e.g. change to logo
[project folder on server]/layouts/header.php
Same folder also contains the various menus used by the system.
Edit the CSS to reflect the needs of your organization. e.g. change background colors
[project folder on server]/libs/css/main.css
Using the Inventory Management System
- Secure the default accounts with a change password.
- Create a user account for each person using the system, including yourself.
Optionally upload a photo for the user.
- Add Categories – you’ll need to add at least one category before you can add products.
- Add Media before you Add Product if you want to associate a photo when you Add Product. Otherwise, you can elect to have no image and updated later.
- Add Order – before you try to Add Sales.
These are the improvements I’ve added for my own system
- Delete confirmation popup before delete actions
- Description column for products
- Location column for products
- View products by category
- Add sales from list of products – remove selected from list.
- Add/Edit/Delete Sales also updates product’s quantity available
- Order Management for all sales – All sales must be associated with an order number
- View Sales by Order calculate total
- Delete Order: deletes all sales associated with order AND restores quantity/stock
- Add/Edit/Delete Order also updates product’s quantity available
- Stock: Inventory Management for all products – Log of increase/decrease stock
- Add/Edit/Delete Inventory also updates product’s quantity available