User Guide
Everything you need to know about using Inventory Store day to day.
Installation
- Download
InventoryStore-Setup-<version>.exefrom the latest release. - Run the installer as Administrator.
- The installer will set everything up automatically and launch the app.
Upgrading
Run the new installer over the existing installation. It upgrades and restarts automatically. Your data and settings are preserved.
Uninstalling
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 at creation and cannot be changed afterwards.
| 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.
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). An edit form opens over the current page - you never leave the inventory list. All fields except Item Type can be changed. Requires Admin or Manager role.
The edit form includes Name, Quantity, Minimum Quantity, SKU, Location, Category, Expiry Date, Scan Warning, and Description. After saving, the detail screen refreshes automatically to show 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 Consume and Restock operations. Requires Admin or Manager role - Viewers can see quantities but the Consume and Restock buttons are not shown to them.
Consuming stock
- Click the item row to open its detail screen
- Under Consume, enter the quantity used and optional notes
- Click Consume
Restocking
- Click the item row to open its detail screen
- Under Restock, enter the quantity added and optional notes
- Click Restock
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
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
| Column | Required | Notes |
|---|---|---|
| Type | Yes | Reusable or Consumable (case-insensitive) |
| 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 |
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. |
| 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 |
| 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.
Custom HTTPS
If you own a domain and have an SSL certificate, you can run Inventory Store directly over HTTPS on port 443 without any tunnel. This is the right choice when the server is accessible from the internet on a fixed IP or hostname.
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
- Go to Settings → Network (Admin only)
- Open the Custom HTTPS / Port 443 section
- Enter your domain name and port (default 443)
- Upload your .pfx file and enter its password
- Check Enable HTTPS
- Click Save
- Click Restart Service - the app will stop and the Windows service manager will restart it automatically
After restart, Inventory Store will be available at both http://localhost:5050 (local HTTP) and https://yourdomain.com (HTTPS on your chosen port).
%AppData%\InventoryStore\https.pfx on the server. Back up your certificate separately.
Removing HTTPS
Click Remove Certificate in the Custom HTTPS section, then click Restart Service. The app will revert 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 | Viewer |
|---|---|---|---|
| View inventory & reports | ✓ | ✓ | ✓ |
| Export CSV | ✓ | ✓ | ✓ |
| Check out / check in items | ✓ | ✓ | |
| Consume / restock items | ✓ | ✓ | |
| Add / edit / delete items | ✓ | ✓ | |
| Import CSV | ✓ | ✓ | |
| Manage categories & locations | ✓ | ✓ | |
| Manage users | ✓ | ||
| Configure remote access & tunnels | ✓ | ||
| Configure custom HTTPS 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 |