User Guide
Everything you need to know about using Inventory Store day to day.
Installation
Inventory Store runs on Windows and on Linux. Both use the same web app, so the screens you see in your browser are identical. Pick your platform below.
Windows
- Download
InventoryStore-Setup-<version>.exefrom the latest release. - Run the installer as Administrator.
- The installer will set everything up automatically and launch the app.
Linux (Ubuntu / Debian)
On Linux there is no tray icon. Inventory Store runs quietly in the background as a service, and you reach it from your browser just like on Windows.
- Download
InventoryStore-linux-x64-<version>.tar.gzfrom the latest release. - Open a terminal, unpack it, and run the installer:
tar xzf InventoryStore-linux-x64-<version>.tar.gz
cd InventoryStore-linux-x64-<version>
sudo ./install.sh
The installer sets everything up for you and starts the app at boot. When it finishes, open http://localhost:5050 (or http://<your-server-ip>:5050 from another computer) to create your admin account.
To check on the app or read its logs later, use:
systemctl status inventorystore # is it running?
journalctl -u inventorystore -f # watch the logs
sudo systemctl restart inventorystore
openssh-client.
Upgrading
Windows: run the new installer over the existing installation. It upgrades and restarts automatically. Your data and settings are preserved.
Linux: download the new archive and run sudo ./install.sh again. Your database and settings are kept.
Uninstalling
Windows: use Add or Remove Programs. You will be asked whether to delete the database and settings - choose No to keep your data for a future reinstall.
First Login
Open http://localhost:5050 in a browser, or double-click the tray icon. You will see a one-time setup page - create your admin username and password (minimum 8 characters). This page disappears permanently once an account is created.
To share access with your team, create additional user accounts in Settings → User Management.
Dashboard
The Dashboard is the first screen you see after logging in. It gives a live snapshot of your inventory at a glance.
Stat cards
Four cards across the top show key numbers at a glance:
| Card | Shows |
|---|---|
| Items | Total number of distinct inventory items |
| In Stock | Sum of all item quantities |
| Low Stock | Number of items at or below their minimum quantity threshold |
| Checked Out | Total units of reusable items currently checked out |
The Low Stock and Checked Out cards are clickable - click either one to jump straight to the matching report.
Available to Checkout panel
At the top of the dashboard, above the other panels, is the Available to Checkout panel. It lists all reusable items that currently have units available. Use the filter box to search by name, category, or location. Use the page size dropdown and arrows at the bottom right to page through the list. Click Checkout on any row to open the scan dialog pre-loaded with that item so you can check it out right away.
Panels
Below the stat cards are four live panels. Each has a View report or Full log link to the corresponding detailed report.
| Panel | Shows |
|---|---|
| Low Stock | Items whose available quantity is at or below the minimum. Shows available qty and minimum qty side by side. |
| Checked Out | All active checkouts. Rows highlighted yellow have been out more than 7 days. |
| Lost Items | Items that have been marked lost, with the last person who had them and the date. |
| Recent Activity | The 10 most recent actions taken by any user: checkouts, check-ins, edits, imports, and more. |
Click any row in the Checked Out panel to open that item's detail screen directly, where you can check it back in right away.
Quick scan
At the top right of the Dashboard there is a SKU field and a Scan button. Type a SKU or item name and press Enter, or click Scan to open the camera. Once an item is found you can check it out, check it in, consume, or restock it without leaving the Dashboard.
Inventory Page
Click Inventory in the top navigation bar to see all items in a searchable, filterable table.
Searching and filtering
Use the search box to find items by name, SKU, location, or category. Select a category from the dropdown next to the search box to narrow the list to a single category. Both filters can be active at the same time. When any filter is active, a clear button (X) appears to reset in one click.
The item table
Each row shows the item's name, type, category, SKU, location, total quantity, available quantity, minimum quantity, expiry date, and status badge. On smaller screens some columns are hidden to fit the layout. Start typing in the search box and the list filters instantly - no need to press Enter or click a button.
Click any row to open the item detail screen, which shows full details and lets you check out, check in, consume, or restock the item without navigating away from the list.
Adding and importing items
Admin and Manager users see an Add Item button and an Import button at the top right. Add Item opens a form to fill in. Import opens the CSV import screen.
Deleting items
Each row has a trash icon at the right. Click it and confirm to permanently delete the item. Requires Admin or Manager role.
Item Types
Every item is one of two types, chosen when you create it. You can change the type later if you need to (see Changing an item's type below).
| Type | Use for | Operations |
|---|---|---|
| Reusable | Equipment that leaves and comes back: cameras, laptops, tools, keys | Check Out, Check In, Mark Lost |
| Consumable | Stock that is used up: batteries, paper, cleaning supplies | Consume, Restock |
Available Quantity for Reusable items reflects how many units are physically on hand (not checked out or lost). For Consumables it is the same as the total quantity.
There is also a third type, the Kit, which bundles several other items together so you can hand them out or use them up in one step. Kits are an optional feature you switch on under Settings → Modules → Kits & Bundles. When the module is on, Kit becomes a choice when you add an item. See Kits & Bundles for the full walkthrough.
Changing an item's type
If you set the wrong type, or an item's use changes, you can switch it between Reusable and Consumable. Open the item, click Edit, and use the Convert to … link shown under the type badge (Admin or Manager only). To prevent mistakes you click it once to arm it, then click Confirm to apply.
Before converting a Reusable item you must check in every unit and clear any lost ones - the convert link explains what is still out and stays disabled until the item is fully back. Converting a Consumable to Reusable has no such requirement.
Categories
Categories let you group items (e.g. Tools, Electronics, Safety) and filter the inventory list with one click. Each category can have an optional color for quick visual identification. Requires Admin or Manager role.
Assigning a category
Select a category from the Category dropdown when creating or editing an item. Choose None to leave an item uncategorized.
Creating a category while adding an item
On the Add Item form, click the + button next to the Category dropdown. A small form appears right there where you can enter a name and pick a color. Click Create - the new category is added to the dropdown and selected automatically. No need to leave the page.
Filtering by category
On the Inventory page, use the All Categories dropdown in the search bar to filter the list to a single category. When a filter is active the item count below the table changes to Showing X of Y items with a Clear filters link to reset in one click.
Assigning items to a category from Settings
In Settings → Categories, each category row has a list icon button. Click it to open a panel showing all items currently in that category and a dropdown to add other items. Use Remove to take an item out of the category, or select from the dropdown and click Add to assign one. This lets you reorganize categories without opening each item individually.
Locations
The Location field on an item is free text (e.g. "Shelf A3", "Bin 12", "Office Closet"). When typing a location on the Add Item or Edit Item form, existing locations appear as suggestions - select one to keep naming consistent.
Manage all locations in one place from Settings → Locations. See Managing Locations for bulk rename, clear, and item assignment.
Adding Items
Click Inventory in the top navigation bar, then Add Item. Requires Admin or Manager role - the button is not shown to Viewers.
| Field | Required | Notes |
|---|---|---|
| Name | Yes | Displayed everywhere; used in search |
| Item Type | Yes | Reusable or Consumable - cannot be changed after creation |
| Quantity | Yes | Total units you own |
| Minimum Quantity | No | Triggers Low Stock warning on dashboard when available stock reaches this level |
| SKU / Barcode | No | Scan with camera or type; used for barcode labels and scan-to-checkout |
| Location | No | Shelf, bin, room - appears in reports and search results |
| Category | No | Color-coded group (create categories first in Settings) |
| Expiry Date | No | Shows Expired / Expiring Soon badges; drives the Expiry report |
| Scan Warning | No | Message shown in a yellow alert whenever this item is scanned |
| Description | No | Free-text notes visible in the item detail panel |
Editing Items
Click any item row to open its detail screen, then click the Edit button (pencil icon). The detail screen closes and the edit form opens in its place - you never leave the inventory list. Every field can be changed, and the item's type can be converted from the link under the type badge (see Changing an item's type). Requires Admin or Manager role.
The form is grouped into Basics (name, quantity, minimum), Identification (SKU, location, category), and Details (expiry, scan warning, description). The labels adapt to the item type - Consumables show In Stock, while Reusables show Total Quantity with a reminder of how many units are currently checked out so you don't set the total below what is out. Expiry Date only appears for Consumables.
Click the magnifying glass button inside the SKU field to look up the product by its barcode (see Product Lookup & Metadata). Choosing a match fills in the name and links the product's image, brand, category, size, and weight to the item when you save. After saving, the detail screen reopens automatically with the updated information.
Deleting items
Click the trash icon on the item row and confirm. Deletion is permanent. Requires Admin or Manager role.
Expiry Dates
Any item (Reusable or Consumable) can have an optional expiry date. When set, the item shows a badge in the inventory list:
- Expired - expiry date has passed
- Exp MMM D - expiring within the next 30 days
- Plain date text - expiry is more than 30 days away
Expiry report
Go to Reports → Expiry to see a full breakdown:
- Expired - all items past their expiry date, sorted oldest first
- Expiring within 90 days - sorted by date; items within 30 days are highlighted yellow, within 7 days shown in red
Setting expiry dates
Add or update the expiry date on the Add Item or Edit Item form using the date picker. The field accepts any date; leave it blank for items that do not expire.
Clients
The Clients page lets you keep a list of the people who borrow items. Every checkout is linked to a client so you always know who has what.
Viewing clients
Click Clients in the top navigation bar. The list shows each client's name, phone number, and date of birth. Use the search box to find someone by name or phone. Click any row to see their full details.
Viewing a client's checkout history
Click any client row to open their contact card. Below the contact details (phone, email, address, etc.) you will see a Checkout History section listing every item that client has ever borrowed. Each row shows the item name, the date it was checked out, and its current status:
- Active - still checked out
- Returned - checked back in
- Lost - marked as lost
If a client has never borrowed anything, the history section is not shown.
Adding a client
Click Add Client (Admin or Manager only). Fill in at least the first name, then optionally add a last name, phone, date of birth, address, and notes. Click Save.
Editing a client
Click any client row to open their details, then click Edit. You can update any field. Click Save when done.
Deleting a client
Click the trash icon on the client row and confirm. Requires Admin or Manager role.
Creating a client during checkout
If you are checking out an item and the person is not in the client list yet, type their name in the Client field and select Create "[name]" from the dropdown. A client record is created automatically so you can continue without leaving the checkout flow.
Check Out & Check In
Reusable items support check-out and check-in workflows. Requires Admin or Manager role. Viewers can open an item's detail screen and see the Active Checkouts list (who has what, for how long) but cannot check out, check in, or mark items lost.
Checking out
- Click any item row to open its detail screen
- In the Check Out section, type a name in the Client field. Matching clients from your list appear as you type - select one, or pick Create "[name]" to add a new client on the spot
- Set the quantity (default 1) and optional notes
- Click Check Out
The item's Available Quantity decreases immediately. The checkout appears under Active Checkouts in the detail screen, showing the person's name and how many days the item has been out.
Checking in
- Click the item row to open its detail screen
- Under Active Checkouts, find the record
- Click Check In
Marking as lost
If an item is not returned, click Mark Lost on the checkout record. The quantity is removed from the available count and appears in the Lost Items report.
Marking a lost item as found
If a previously lost item turns up, open the item's detail screen. A Lost Items section appears below Active Checkouts, showing each lost record. Click Mark Found - the quantity is restored to available stock and the record is removed from the Lost Items report.
Consumables
Consumable items track stock levels using a single Adjust Stock control. Requires Admin or Manager role - Viewers can see quantities but the adjust buttons are not shown to them.
Consuming and restocking
- Click the item row to open its detail screen
- In the Adjust Stock control, set the quantity and optional notes
- Click the − button to consume (use) stock, or the + button to add stock
The In Stock figure briefly flashes red when stock is consumed or green when stock is added, so you get instant confirmation without the screen jumping. Both operations are recorded in the activity log.
Barcode Scanning
Any device with a camera can scan barcodes to quickly look up and action items - no app install required. Access the web UI from any device on the same network (or via a tunnel for remote access).
Quick scan from anywhere
Click the barcode icon in the top navigation bar to open the scanner from any page. At the top of the scanner screen there are two search modes:
- SKU / Barcode - type or scan a barcode. If no exact match is found the app automatically searches by name and shows the closest results.
- Name - type part of an item name. All matching items are shown so you can pick the right one.
If multiple items match, a list appears. Click any result to load that item. Once an item is loaded you can check it out, check it in, consume, or restock it without navigating away.
Adding an item from the scanner
If no item is found, an Add Item button appears (Admin and Manager only). Click it to fill in a quick form right inside the scanner: name, type (Reusable or Consumable), quantity, and optional location. Click Add & Continue to create the item and load it immediately. If you scanned a barcode, the SKU is attached to the new item automatically.
If you searched by name and got multiple results, an Add New Item Instead button appears at the bottom of the results list if you want to create a brand new item rather than picking an existing one.
Scanning in the inventory list
Click the scan icon next to the SKU field on the Add Item or Edit Item forms to scan a barcode directly into that field.
Assigning SKUs
Edit an item and scan or type a value into the SKU / Barcode field. Any barcode format supported by your device's camera works.
Scan warnings
If an item has a Scan Warning set (e.g. "Requires PPE", "Check expiry date"), a yellow alert is shown every time the item is scanned.
Printing barcode labels
- Ensure items have SKUs assigned
- Go to Reports → Barcode Sheet
- Click Print - the page formats itself with one barcode per item in a label-friendly grid
Terminal Mode
Terminal Mode is a simple, full-screen page built for a tablet or shared front-desk device. It has large touch-friendly buttons and only the controls needed to hand items out, take them back, and use up stock. It lives at /terminal (for example http://localhost:5050/terminal).
Finding an item
There is one search box at the top. Type a SKU or part of an item name and matches appear as you type, or tap Scan with camera to read a barcode. Pick a result to open it. If only one item matches it opens on its own.
What you can do on the Terminal
- Check out a reusable item to a person, and check in items that come back
- Consume (use up) consumable stock by tapping the red − button next to the quantity
- Restock with the green + button - only Admins and Managers see this
There is no add, edit, or delete on the Terminal. It is meant for quick day-to-day handouts, not for managing the catalog.
The Staff role
There is a user role called Staff made for the Terminal. A Staff user can check out, check in, and consume stock, but cannot add items, restock, or open the reports or settings. When a Staff user logs in they are taken straight to the Terminal, and logging out brings them back to the Terminal sign-in so the device is always ready for the next person.
Create a Staff user the same way as any other - go to Settings → User Management, click Add User, and choose Staff (Terminal) as the role.
Using it on a tablet
Open /terminal in the tablet's browser. Buttons are sized for fingers, and the page remembers your light or dark theme choice using the moon and sun button in the corner. When you are done with one item, tap Next item to clear the screen for the next person.
Product Lookup & Metadata
Instead of typing product details by hand, Inventory Store can look up a barcode against free public product databases and fill the information in for you.
Sources
| Source | Best for |
|---|---|
| Open Library | Books (ISBN barcodes beginning 978 / 979) |
| UPC Item DB | General retail products |
| Open Food Facts | Food & beverages |
For each match the app stores the product name, image, brand, category, size, and weight where the source provides them.
Looking up a product
- On the Add Item or Edit Item form, type or scan a barcode into the SKU / Barcode field
- Click the magnifying glass button in the SKU field (or Lookup Product on the Add form)
- A results list shows every match with its image and details. Click Use This on the one you want
- The product name is filled in and the metadata is linked to the item when you save
Once linked, the item's detail screen shows the product image alongside its stats, and a Product Details button reveals the brand, category, and full description.
The metadata library
Click the Metadata button at the top of the Inventory page (Admin or Manager) to open the metadata library - a table of every product record cached from lookups. Each row shows the image, barcode, source, name, brand, category, size, weight, how many items are linked to it, and when it was last fetched.
The two buttons on the left of each row let you:
- Refresh (circular arrow) - re-fetch that product from its source and update the stored copy. Existing item links are preserved.
- Delete (trash) - remove the cached record. Click once to arm the button, then click Confirm to proceed. Deleting unlinks the product from every item that was using it, then removes it from storage.
About Modules
Modules are optional add-ons. Each one is off by default and stays completely out of the way until an Admin turns it on, so you only see the extra features your team actually needs.
Turning a module on or off
- Go to Settings → Modules (Admin only)
- Find the module and flip its switch to Enabled or Disabled
- When a module is on, click Configure to manage its settings and data
The available modules are Safety Data Sheets, Cost & Valuation, Consumption Forecasting, and Webhooks & Integrations, each described below.
Safety Data Sheets
If your team stores or uses chemicals, the optional Safety Data Sheets (SDS) module lets you keep hazard information on file for an item. It looks up safety data by chemical name from PubChem, a free public database run by the US National Institutes of Health. No account or API key is needed.
Turning the module on
An Admin enables it once: go to Settings → Modules → Safety Data Sheets and flip the switch to Enabled. While it is off, none of the SDS buttons appear anywhere in the app.
Attaching safety data to an item
You can do this while adding an item or later by editing it (Admin or Manager). Both screens have a Safety Data Sheet section.
- On the Add Item or Edit screen, find the Safety Data Sheet section and enter the chemical name (for example "sodium hypochlorite" rather than "bleach")
- Click Look up SDS
- If a match is found, the safety details are attached to the item (right away when editing, or as soon as you save a new item)
For each match the app stores the signal word (Danger or Warning), hazard pictograms, hazard statements, precaution statements, the CAS number, and a link to the full PubChem page.
Viewing safety info
Once an item has safety data attached, the standard hazard pictograms (the red diamond symbols) appear next to its name in the inventory list and on the scan screen. The item's detail panel and the scan card also show a Safety section with the signal word and pictograms, plus a View SDS Info button (visible to everyone, including Viewers) that opens the full hazard summary and a link to the PubChem record.
The metadata table
To see everything on file, go to Settings → Modules → Safety Data Sheets and click Configure. The table lists each item that has safety data, along with its chemical name, CAS number, signal word, and hazards. Click the trash button on a row to remove that item's safety data.
Cost & Valuation
The optional Cost & Valuation module lets you record what each item costs and see what your whole inventory is worth. Turn it on under Settings → Modules → Cost & Valuation.
Adding a cost to an item
- Open an item and click Edit (Admin or Manager)
- In the Cost & Valuation section, enter the unit cost. Optionally add a purchase date and a useful life in months (used for depreciation on reusable items)
- Click Save Cost
The item's detail panel then shows its unit cost and the line value (unit cost times quantity).
Seeing your inventory value
Click Configure on the module, or open Reports → Valuation, to see your total value, a book value after straight-line depreciation, a breakdown by category, and a per-item table. You can set your preferred currency symbol on the Configure screen.
Consumption Forecasting
The optional Consumption Forecasting module predicts when your consumable items will run out, so you can reorder in time. Turn it on under Settings → Modules → Consumption Forecasting.
The app keeps a usage history every time you consume or restock a consumable. It then works out an average daily usage over a recent window of days and projects a run-out date from your current stock.
Viewing the forecast
Click Configure on the module, or open Reports → Forecast, to see each consumable with its average daily use, the days of stock remaining, and the projected run-out date, sorted soonest first. Items due to run out within two weeks are highlighted.
Setting the window
On the Configure screen you can change the usage window (30 days by default). A shorter window reacts faster to recent changes; a longer window smooths out day-to-day swings.
Webhooks & Integrations
The optional Webhooks & Integrations module sends a small message to a web address (URL) of your choice whenever something happens in your inventory. Use it to connect Inventory Store to tools like Slack, Zapier, or Make, or to your own scripts. Turn it on under Settings → Modules → Webhooks & Integrations.
Adding an endpoint
- Click Configure on the module
- Enter the payload URL that should receive the messages
- Optionally enter a shared secret so the receiver can verify the message is genuine
- Tick the events you want to send (checkout, check in, lost, found, consumed, restocked, low stock, item created, updated, or deleted)
- Click Add. Use the Test button on a row to send a sample message and confirm it arrives
Each message is sent as JSON and includes the event name, a timestamp, and details of the item. When you set a shared secret, the app adds a signature header (X-InventoryStore-Signature) so the receiving system can confirm the message really came from your app and was not changed in transit.
Kits & Bundles
The optional Kits & Bundles module lets you group several items into a single kit, so you can hand them out or use them up all at once instead of one item at a time. Think of a kit as a shell that points to other items, for example a "New Hire Kit" that contains a laptop, a charger, and a welcome pack. Turn it on under Settings → Modules → Kits & Bundles.
A kit can mix item types freely. It can hold reusable items (which come back), consumable items (which get used up), or both. A kit does not hold any stock of its own. What it can do depends entirely on the items inside it.
Creating a kit
- On the Inventory page, click Add Item (Admin or Manager)
- Choose Kit as the item type, give it a name, and save
- Open the new kit, click Edit, and use the Kit Items box to search for items and add them
- For each item, set how many are needed for one kit (the "per kit" amount)
You add the items in the Edit screen because the kit needs to exist first before you can link things to it. You can add or remove items, and change the per-kit amounts, any time. A kit cannot contain another kit.
How many kits you can build
The kit's Available number tells you how many complete kits you could put together right now. It is set by the item you have the least of. For example, if one kit needs 2 of an item and you only have 5 in stock, you can build 2 kits from that item. The scarcest item always decides the total.
Checking out a kit
Open the kit, enter a borrower, choose how many kits, and click Check Out Kit. The app then does the right thing for each item inside:
- Reusable items are checked out and tracked, so they can be returned later.
- Consumable items are used up straight away, the same as if you had consumed them on their own.
When you check the kit back in, every reusable item inside comes back in one step. You can also mark a whole kit as lost, which marks all of its reusable items lost together.
By default, consumable items are not restored when a kit comes back, because they were treated as used when the kit went out. If you want to account for what was really used, switch on consumable reconciliation (see below).
Counting what was used when a kit comes back
Often a kit goes out with more supplies than it needs, and some come back unused. Consumable reconciliation lets you record what was actually used so the leftover goes back into stock instead of being written off.
Turn it on under Settings → Modules → Kits & Bundles → Configure. There you can also choose how the count is phrased:
- Count what was used: when a kit comes back you enter how many of each consumable were used.
- Count what is left: you enter how many of each consumable came back unused.
With reconciliation on, checking a kit in opens a short pop-up that lists each consumable, with a plus and minus button to set the count for each one. Whatever was not used is added straight back to stock. You can also tap Skip for now to check the kit in right away and count it later.
Any kit you skip is flagged and appears on the Reconciliation report (see Reports). Open it from there whenever you are ready, count what came back, and the leftover returns to stock. Counting a skipped kit later always asks how many are left, since the kit is already back in front of you.
When stock runs short
If you ask for more kits than you can build, the app stops and shows you exactly which items are short. What happens next depends on a per-kit setting called Allow partial, which an Admin or Manager sets on the kit's Edit screen:
- Allow partial is off (the default): a kit must be complete to go out. You are told what is missing and can cancel.
- Allow partial is on: you can choose to take what is available, and the app hands out or uses only the items that are in stock.
Kits on the Terminal
Kits work on the Terminal too. Staff can scan or search for a kit and check it out or check it back in as a single unit, with the same low-stock prompts. If consumable reconciliation is on, checking a kit in on the Terminal shows the same count pop-up, with a Skip for now option. The individual items inside a kit are not handled separately on the Terminal; the kit is always treated as one thing.
Incomplete Kits report
While the module is on, Reports gains an Incomplete Kits tab. It lists every kit that cannot be built right now, along with the exact items that are short and how many more you need. Kits with no items added yet show up here too. It is a quick way to see what to reorder so your kits are ready when you need them.
CSV Import & Export
Exporting
Go to Reports and click Export CSV (top right). A dated file is downloaded containing all items with all fields. Available to all roles.
Importing
Requires Admin or Manager role. The Import button is not shown to Viewers.
- Go to Inventory and click Import
- Prepare a CSV file. The first row must be the header:
Type,Name,Quantity,MinimumQuantity,SKU,Location,Category,ExpiryDate,Description,ScanWarning,Tags
| Column | Required | Notes |
|---|---|---|
| Type | Yes | Reusable or Consumable (case-insensitive). Kits cannot be imported from CSV; build them in the app instead. |
| Name | Yes | Item name |
| Quantity | Yes | Whole number, 0 or higher |
| MinimumQuantity | No | Defaults to 0 |
| SKU | No | Leave blank to skip |
| Location | No | Free text |
| Category | No | Category name - created automatically if it doesn't exist |
| ExpiryDate | No | Format: YYYY-MM-DD (e.g. 2027-06-01) |
| Description | No | Free text |
| ScanWarning | No | Free text |
| Tags | No | One or more tag names separated by ; (or commas inside a quoted field) - created automatically if they don't exist |
After upload, a summary shows how many rows were imported and any rows that failed (with row number and reason).
"" to escape a literal quote within a quoted field.
Reports
Click Reports in the top navigation bar. Use the menu on the left to switch between report types. All reports support printing via the Print button. The Export CSV button (top right) downloads all items regardless of which report is active.
| Tab | Shows |
|---|---|
| Stock Levels | All items with quantities, availability, and expiry. Filterable by type and low-stock flag. |
| Checked Out | All active checkout records - who has what, for how long. |
| Lost Items | Items marked lost, with the last person who checked them out. |
| Take Inventory | Printable checklist for physical stock counts - SKU, location, expected quantity, and a blank field for actual count. |
| Incomplete Kits | Kits that cannot be built right now, with the items that are short. Shown only when the Kits & Bundles module is on. |
| Reconciliation | Checked-in kits that still need their consumables counted. Each one opens a pop-up where you record what came back, and the leftover returns to stock. Shown only when the Kits & Bundles module has consumable reconciliation switched on. |
| Expiry | Expired items and items expiring within 90 days, grouped and color-coded by urgency. |
| Barcode Sheet | Printable barcode grid for all items that have a SKU. |
| Activity Log | Full audit trail. Filter by date range and action type. Timestamps shown as date. |
Managing Categories
Go to Settings → Categories (Admin or Manager). Here you can create, rename, recolor, delete categories, and manage which items belong to each category.
Creating a category
- Click Add Category
- Enter a name and choose a color from the swatch palette
- Click Create
Editing and deleting
Click the pencil icon on a category row to change its name or color. Click the trash icon to delete it - items in that category become uncategorized but are not deleted.
Assigning items to a category
Click the list icon on any category row to open the item panel. It shows all items currently in that category with a Remove button on each, and a dropdown to add other items to the category. Changes take effect immediately.
Managing Locations
Go to Settings → Locations (Admin or Manager). The table lists every location currently assigned to at least one item, along with how many items use it.
Adding a location
Click Add Location, enter a name, then click Next. The item assignment panel opens immediately so you can assign items to the new location right away.
Assigning items to a location
Click the list icon on any location row to open the item panel. It shows all items currently at that location with a Remove button on each, plus a dropdown to add other items. Changes take effect immediately without a page reload.
Renaming a location
Click the pencil icon on a location row, enter the new name, and click Rename. Every item at that location is updated at once.
Clearing a location
Click the X icon to remove the location value from all items that use it. The items remain in inventory with no location set.
User Management
Go to Settings → User Management (Admin only).
Creating users
Click Add User and fill in the username, optional name/email, password, and role.
Editing users
Click the pencil icon on any user row. You can change their name, email, role, and password. Leave the password field blank to keep the existing password.
Suspending and deleting users
Click the pause icon to suspend a user - suspended users cannot log in but their history is preserved. Click the play icon to reactivate. Click the trash icon to permanently delete a user.
Admins can suspend or delete other admins. You cannot suspend or delete your own account - the suspend and delete buttons are hidden on your own row as a safeguard against accidental lockout.
Roles
| Role | Can do |
|---|---|
| Admin | Everything - manage users, settings, categories, database backup/restore, and all inventory operations |
| Manager | All inventory operations (checkout, consume, restock, add/edit/delete items, manage categories); run all reports; cannot manage users, remote access, or database settings |
| Staff | Terminal only. Can check out, check in, and consume stock from the Terminal, but cannot restock, add/edit/delete items, or change settings. Sent straight to the Terminal at login. |
| Viewer | View inventory and reports only. Can see item details and active checkouts but cannot check out, consume, edit, delete, or import items. |
Network & Remote Access
Go to Settings → Network (Admin only) to configure tunnels and HTTPS. Once a tunnel is active, the public URL is shown in the tray icon menu and in the settings panel.
Serveo (recommended)
Serveo gives you a free persistent subdomain - the same URL every time you start the tunnel. Requires a free Serveo account.
One-time setup:
- Click Generate SSH Key.
- Copy the public key using the clipboard button.
- Open console.serveo.net, sign up, and add the public key under SSH Keys.
- Choose a subdomain name (e.g.
myinventory) and click Save Subdomain. Your URL will behttps://myinventory.serveousercontent.com. - Click the green Serveo button to start. The tunnel status updates to Running when ready.
To start Serveo automatically whenever the app starts, go to Auto-start and select Serveo.
Quick Tunnel (Cloudflare)
Zero configuration - click Quick Tunnel and a temporary HTTPS URL is generated instantly via Cloudflare. No account needed. The URL changes every time the tunnel is started, so it is suitable for one-off sharing only.
localtunnel
Enter a subdomain name to claim yourname.loca.lt. Free but shows an interstitial page to visitors (a known limitation of the loca.lt service). First-come-first-served subdomain - not guaranteed to be available.
Stopping a tunnel
Click Stop Tunnel in the status card.
HTTPS / TLS
If you own a domain, you can run Inventory Store over a secure https:// address on port 443 without any tunnel. This is the right choice when the server is reachable from the internet on a fixed address. There are two ways to do it: let the app get a free certificate for you automatically, or upload one you already have.
Automatic certificate (Let's Encrypt)
This is the easiest option. Inventory Store will fetch a free certificate from Let's Encrypt, turn on HTTPS, and renew the certificate on its own before it ever runs out, all in the background.
What you need first:
- A domain name whose DNS points at this server's address
- Ports 80 and 443 open and reachable from the internet (check your router or firewall, and any cloud provider's security group)
Steps:
- Go to Settings → Network (Admin only)
- Open the HTTPS / TLS (Port 443) section
- Under Automatic certificate (Let's Encrypt), turn on Enable automatic HTTPS
- Enter your domain (for example
inventory.mycompany.com) and an email address for renewal notices - Tick the box to accept the Let's Encrypt Terms of Service
- Click Save, then restart the service
After the restart, the app contacts Let's Encrypt, gets the certificate, and switches on HTTPS. From then on it renews the certificate by itself, so you do not have to think about it again.
http:// address are sent to the secure one. The app still answers on http://localhost:5050 for use on your own network. On Linux the service is allowed to use ports 80 and 443 even though it does not run as the root user.
Upload your own certificate
If you already have a certificate, you can use it instead of the automatic option.
What you need:
- A domain name pointing to your server's IP address (via your DNS provider)
- An SSL certificate in .pfx format (certificate + private key bundled together)
- Port 443 open on your firewall/router forwarding to the server
Creating a .pfx file
If you have a certificate from Let's Encrypt or another provider in PEM format (two separate files - a certificate and a private key), combine them into a single .pfx with:
openssl pkcs12 -export -out https.pfx -inkey privkey.pem -in fullchain.pem
You will be asked to set a password for the .pfx - keep this, you will need it in the next step.
Setting up HTTPS with your own certificate
- Go to Settings → Network (Admin only)
- Open the HTTPS / TLS (Port 443) section
- Under Or upload your own certificate, enter your domain name and port (default 443)
- Upload your .pfx file and enter its password
- Check Enable HTTPS
- Click Save
- Restart the service - the app will stop and start back up with HTTPS on
After restart, Inventory Store will be available at both http://localhost:5050 (local HTTP) and https://yourdomain.com (HTTPS on your chosen port).
%ProgramData%\InventoryStore on Windows, /var/lib/inventorystore on Linux). Back up your certificate separately.
Removing HTTPS
To turn off automatic HTTPS, untick Enable automatic HTTPS, click Save, and restart the service. To remove an uploaded certificate, click Remove Certificate in the HTTPS / TLS section, then restart the service. Either way the app reverts to HTTP only.
Changing the certificate
Upload a new .pfx file and click Save, then Restart Service. The old certificate is replaced immediately.
Public View
Public View exposes a read-only, login-free page at /public that shows whichever inventory items you choose. Embed it in any website or intranet portal with a single <iframe> tag.
Enabling public view
- Go to Settings → Public View (Admin only).
- Check Enable public view and click Save.
- An embed code and direct link appear immediately.
Selecting visible items
With public view enabled, a table lists every item in your inventory. Toggle the switch on any row to make that item visible on the public page. Changes take effect instantly - no save button needed.
The embed code
Copy the <iframe> snippet from the Embed Code card and paste it into any web page. The iframe shows item names, type (Reusable / Consumable), category, location, and live availability - it refreshes when the page is reloaded.
For external access, use your tunnel URL instead of the local address. The settings panel shows a ready-made tunnel link when a tunnel is active.
<iframe src="http://YOUR_HOST/public" width="100%" height="600"
frameborder="0" style="border:none;border-radius:8px;"></iframe>
What visitors see
- Items grouped by category, sorted alphabetically
- A colored availability pill: X available / X available (low stock) / 0 available
- Item location (if set)
- A small type indicator dot (blue = Reusable, green = Consumable)
Visitors cannot log in, check out items, or modify anything from the public page.
Permissions
| Action | Admin | Manager | Viewer |
|---|---|---|---|
| Enable / disable public view | ✓ | ||
| Toggle individual item visibility | ✓ | ✓ |
Push Notifications
Inventory Store can send instant push notifications to your phone whenever something important happens - an item is checked out, stock runs low, or someone logs in. Notifications are sent through ntfy, a free and open-source service.
Go to Settings → Notifications (Admin only) to configure this feature.
How ntfy works
ntfy is a simple push notification service. You create a private "topic" (think of it like a private channel name), and anyone subscribed to that topic receives the messages sent to it. The free tier at ntfy.sh works for most teams, or you can run your own ntfy server if you prefer to keep everything self-hosted.
- Install the ntfy app on your phone (available for iOS and Android - search "ntfy" in your app store)
- In the app, subscribe to a topic of your choosing (e.g.
my-inventory-alerts). Use a name that others are unlikely to guess to keep your alerts private - In Inventory Store, go to Settings → Notifications and enter the same topic name
Setting up notifications
| Field | Notes |
|---|---|
| Server URL | Leave as https://ntfy.sh unless you run your own ntfy server |
| Topic | Your private channel name - must match what you subscribed to in the ntfy app. Leave blank to disable all notifications. |
| Auth Token | Optional. If you have a paid ntfy account or a self-hosted server with access control, paste your token here to authenticate. Leave blank for the free public service. |
Choosing which events send a notification
Each event has its own on/off switch. Turn on only the ones that matter to you:
| Event | When it fires |
|---|---|
| Item checked out | Any time a reusable item is checked out to someone |
| Item returned | Any time a checked-out item is returned |
| Item marked lost | Any time a checkout record is marked as lost |
| Low stock alert | After a consumable item is used and the quantity falls to or below the minimum level |
| User login | Any time any user logs into the app |
Testing your setup
After filling in the Server URL and Topic, click Save, then click Send Test. A test notification is sent immediately. If you see it on your phone, everything is working. The result (HTTP status) is shown next to the button so you can diagnose any issues.
Clearing your token
If you need to remove a saved auth token, click Clear token next to the token field. The token is deleted and future notifications are sent without authentication.
Dark Mode
Inventory Store includes a built-in dark theme. Click the moon icon in the top navigation bar (to the left of your username) to switch to dark mode. Click the sun icon to return to light mode.
If your operating system is set to dark mode and you have not chosen a preference in the app, the app (including the login page) will automatically follow your system setting.
Your preference is remembered per device and persists across sessions. Changing the theme on one device does not affect other devices or other users.
Database Backup & Restore
Go to Settings → Database (Admin only) to download a backup of your data or restore from a previous backup.
Downloading a backup
Click Download Backup. The app creates a clean snapshot of your data while staying fully online, then downloads it as a .db file named with the current date and time.
Restoring from a backup
- Go to Settings → Database.
- Click Choose File under Restore from Backup and select a
.dbfile previously downloaded from this page. - Click Restore Database and confirm the prompt.
The app automatically saves a copy of your current data before overwriting, giving you a safety net if the restore needs to be undone.
Updates
Inventory Store checks for new releases on GitHub automatically in the background. When an update is available you will see a notice without needing to do anything.
When a newer version is available, a small notice appears above the logout button in the sidebar with the new version number and a link to the GitHub release. The notice persists until the app is updated - it does not need to be dismissed.
To trigger an immediate check, go to Settings → App Info and click Check for Updates. The result appears inline - either a version badge linking to the release page or a confirmation that the current version is up to date.
To update, download and run the new installer. It upgrades and restarts automatically, typically in under 30 seconds.
The current version is shown in Settings → App Info.
Tray Icon
The tray icon sits in the Windows system tray and provides quick access to common actions.
| Action | What it does |
|---|---|
| Double-click icon | Open Inventory Store in your default browser |
| Open Inventory Store | Open Inventory Store in your browser |
| Local: http://... | Shows your local network address. Click to copy. |
| Tunnel: ... | Shows the active tunnel URL. Click to copy. |
| Reset Admin Password | Reset the admin password without logging in. Useful if you are locked out. |
| Exit | Close the tray icon. Inventory Store keeps running and stays accessible. |
Role Reference
| Action | Admin | Manager | Staff | Viewer |
|---|---|---|---|---|
| View inventory | ✓ | ✓ | ✓ | ✓ |
| View reports | ✓ | ✓ | ✓ | |
| Export CSV | ✓ | ✓ | ✓ | |
| Check out / check in items | ✓ | ✓ | ✓ | |
| Consume stock | ✓ | ✓ | ✓ | |
| Restock items | ✓ | ✓ | ||
| Add / edit / delete items | ✓ | ✓ | ||
| Import CSV | ✓ | ✓ | ||
| Manage categories & locations | ✓ | ✓ | ||
| Manage users | ✓ | |||
| Configure remote access & tunnels | ✓ | |||
| Configure HTTPS / TLS (automatic or uploaded certificate) | ✓ | |||
| Configure push notifications | ✓ | |||
| Enable / disable public view | ✓ | |||
| Toggle item visibility in public view | ✓ | ✓ | ||
| Database backup & restore | ✓ | |||
| Change own password | ✓ | ✓ | ✓ |
Status Badges
These badges appear on item rows in the Inventory list and Stock Levels report.
| Badge | Meaning |
|---|---|
| OK | Available quantity is above the minimum threshold |
| Low Stock | Available quantity is at or below the minimum quantity |
| Out | One or more units are currently checked out (Reusable) |
| Lost | One or more units have been marked lost |
| Expired | Expiry date has passed |
| Exp MMM D | Expiry date is within the next 30 days |
| Reusable | Item type indicator |
| Consumable | Item type indicator |