Using a Raspberry Pi for your own Inventory Management System

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.

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 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.”

Included Features:

  • 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.

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/

Use the MySQL/MariaDB command line to import the database schema. Create a database named oswa_inv and import the schema included in the project directory oswa_inv.sql If you haven’t done so, installation is as easy as:

sudo mysql -uroot

mysql> CREATE DATABASE oswa_inv;
mysql> USE oswa_inv;
mysql> source /var/www/html/inventory/oswa_inv.sql

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

Improved Version Source-Code


38 thoughts on “Using a Raspberry Pi for your own Inventory Management System

  1. Hi there,
    thanks to your post I found this little gem of inventory mangement. I see you have done a lot improovements. Are you willing to share your edits? Best Chris


  2. Good afternoon,
    I am very interested in getting this up and running, however I am stuck at a WordPress landing page after I have completed all the steps. Is there a checklist of where to start in my trouble shooting and audit of my work?

    It seems like I dont have any temlpates, but as I read through your guide it should have been included and defaulted in the files I downloaded.

    Thanks for reading!


    1. Hi Florian,
      Thank you for taking the time to share the issue you are having, it’s likely other people have had the same experience. The WordPress installation has over written the default settings of the web server installation. If you try the URL to your inventory management system directory, for example: http://localhost/inventory/index.php and you are redirected to WordPress then you will want to check your apache web server settings found in the /etc/apache2/apache.conf
      Let me know how it goes!


  3. Thank you for taking your time to respond .

    This is my first time but looking at the apache web server settings nothing seems to out of order . When try log in the site with localhost i get wordpress, if i try with ip adress//inventory/index.php i get a not found page .

    If i go on http://localhost/inventory/index.php i get 404

    Thank you !


  4. Mine is setup like this /var/www/html/warehouse-inventory-system , i kept the files in warehouse-inventory-system where they are .

    Thank you


  5. If i try to log in i get Database connection failed:Access denied for user ‘admin’@’localhost’ (using password: YES) where do i choose the default log in ? Should i just go and grand all permission to admin user ?
    Thank you


    1. Check your MySql databases configuration. The access is denied because the default password is set to yes for user admin. Does user admin exist, if so is the password in the conf file inside the inventory management system directory set to that password.


  6. Hi, couple of things i need help with/ask about?:
    – Is there a way to change currency to £?
    – Is there anyway of changing it so prices could be say £1.30 as at the moment it only allows me to input whole numbers?
    – When adding products to a sale is there a way as adding multiple items at once, as if i put in qty’s for severasl items then click add item on one of the items it only adds that one item even though ive put in quantities for several?

    Either way this is a very nice inventory management tool 🙂


  7. Saw you updated some of the files… went to re-downloaded and deleted current folder contents and replaced with new download. Changed config file to my database password and now getting “Error on this Query :
    INSERT INTO log (user_id,remote_ip,action,date) VALUES (”,’::1′,’/’,’2019-11-21 21:51:03′)”… any ideas?


  8. Hello,
    I was prompted with a login.
    Logging in with admin:admin brings me to
    Error on this Query :
    INSERT INTO log (user_id,remote_ip,action,date) VALUES (”,’192.168.x.x’,”,’2019-12-02 23:53:31′)
    Checked, I have a table for “log”
    not sure how to check if I have permissions on insert via phpmyadmin.
    ..which file should be edited to comment-out the source-code if I don’t want to log.


    1. I haven’t installed from scratch in a while. Let me check it out, but if you want to comment out the logging, the file you’re seeking is in the includes directory. Bottom of file named “load.php”


  9. Thanks for the fast reply.

    Created fresh LAMP,
    Wordpress & LAMP is 100%.
    noticed 11 hours ago git was updated,
    I have done a fresh install of oswa.
    Still having the same issue, I receive the proper login/password prompt, and have tried all 3 default user/pws. they all end with the same result…

    Error on this Query :
    INSERT INTO log (user_id,remote_ip,action,date) VALUES (”,’192.168.x.x’,’auth.php’,’2019-12-03 23:02:18′)

    Refreshing the page results in the same error unless I delete the log, then I am prompted again with a login/pw,
    I’m currently stuck in a loop of entering default credentials, deleting the only log in the oswa_inv SQL tree and refreshing the index.php in my browser.

    I have confirmed the SQL user/pw is correct & matches the config.php,
    Also looks like user permissions are correct via phpmyadmin.

    Is there an older ver. I can install?

    Thanks again for your time.


    1. Hi Freddy, thank you for your work. I appreciate you sharing your experience. I’ll look into the issue. For some reason the user id which in the case of admin is 1, is not being inserted in the SQL query.


      1. Hello,
        When adding media the 1st upload works, the next upload results an error.
        Error on this Query :
        INSERT INTO media ( file_name,file_type ) VALUES (
        Refresh the /media.php & try again I’m prompted “in red” The file image0002.jpeg already exists.
        checking the dir the file HAS been uploaded, using phpmyadmin I have manually added a new row under “media” nest with proper info, refreshing media.php, Now the new media is viewable in the GUI.

        When adding a product, 1st product goes smooth, 2nd results an error
        Error on this Query :
        INSERT INTO stock (product_id,quantity,comments,date) VALUES (’10’,’1′,’initial stock’,’2019-12-04 20:04:15′)

        Reviewing product nest in phpmyadmin, The 2nd product has over written the 1st product instead of creating a new row under “product” nest.
        Manually added new row & filled in the proper info, all looks well in GUI after refreshing browser.

        Manually added 15 media files, as well new rows under “media” & “products” nest using phpmyadmin.
        All looks good in the GUI after refresh,



Leave a Reply to Chris Cancel reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.