Storage Boxx is an open-source PHP Inventory Management System. It is not a “super professional crazy bloated with features” kind of system. But it covers the basics, has a built-in webcam QR code scanner, built-in NFC scanner, and low stock warning push notifications. This will help small businesses get started with inventory stock keeping.
TABLE OF CONTENTS
DOWNLOAD & INSTALLATION
First, here are the download links and a quick “setup guide” for the impatient folks who don’t have the patience to read through everything.
LICENSE & DOWNLOAD
Storage Boxx is released under the MIT License. You are free to use it for personal and commercial projects, and modify it as you see fit. On the condition that the software is provided “as-is”. There are no warranties provided and “no strings attached”. Code Boxx and the authors are not liable for any claims, damages, or liabilities.
Download Storage Boxx | GitHub | SourceForge
SYSTEM REQUIREMENTS
- LAMP/WAMP/MAMP/XAMPP
- Apache Mod Rewrite
- PHP MYSQL PDO Extension
- PHP OpenSSL Extension
- At least PHP 8.0
INSTALLATION
Just access http://your-site.com
in your browser and walk through the installer.
EQUIPMENT RECOMMENDATIONS
- A simple USB QR Code scanner only costs like 30~40 bucks these days – Get yourself one if you don’t already have one.
- NFC tags ain’t that bad either – 10 pieces of Ntag213 only cost 2-3 bucks. Buy them in bulk, and one piece will only cost a few cents.
HOW TO USE
So far so good? Let us now go through a quick crash course on how to use Storage Boxx.
Fullscreen Mode – Click Here
STORAGE BOXX FAQ
Storage Boxx is “not working”? Here are a few of the common problems and how to “fix” them.
I DELETED ALL ADMIN ACCOUNTS
require "lib/CORE-Go.php";
$_CORE->load("Users");
$_CORE->Users->save("NAME", "EMAIL", "PASSWORD");
Just create an “account recovery” script to create a new account. Run and delete this afterward.
CHANGED DOMAIN OR PATH
- Update
HOST_BASE
inlib/CORE-Config.php
. Make sure to include the path (with a trailing slash) if not deployed at the base URL. E.G.http://site.com/storageboxx/
- Delete the existing
.htaccess
file. - Create
init.php
.require "lib/CORE-Go.php";
$_CORE->Route->init();
- Access
http://site.com/init.php
, this will automatically regenerate the.htaccess
file. - Delete
init.php
. - Clear the service worker and browser cache if you want to be “totally safe”.
PAGES ARE NOT RESOLVING OR SHOWING PROPERLY
- Make sure that
MOD_REWRITE
is enabled in Apache. - Make sure that
AllowOverride
is set properly in Apache. - If using
https://
, make sure that your SSL cert and virtual host are properly set. - In Mac/Linux, make sure that Apache/PHP has permission to read the files and folders.
Here is a quick “working example” of a test site on my WAMP server:
<VirtualHost site.com:443>
DocumentRoot "D:\http"
ServerName site.com:443
SSLEngine On
SSLCertificateFile "C:/xampp/apache/conf/ssl.crt/server.crt"
SSLCertificateKeyFile "C:/xampp/apache/conf/ssl.key/server.key"
<Directory "D:\http">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
MANUAL INSTALLATION
- Create a database and import all
lib/SQL-*.sql
in ascending order. - Open
lib/CORE-Config.php
, update the settings to your own.- The host settings.
- Database settings.
- If you want to develop mobile apps, consider enabling CORS.
- Set your own JWT secret key, and the issuer to your domain or company name.
- Generate your own VAPID keys for the push notification.
require "lib/webpush/autoload.php";
print_r(Minishlink\WebPush\VAPID::createVapidKeys());
- Paste the keys into the “push notification keys” section in
lib/CORE-Config.php
.
- Run
$_CORE->Route->init()
to create.htaccess
. - Create your own admin user. See “deleted all admin accounts” above.
- Update
index.php
.require __DIR__ . DIRECTORY_SEPARATOR . "lib" . DIRECTORY_SEPARATOR . "CORE-Go.php";
$_CORE->load("Route");
$_CORE->Route->run();
I WANT TO CHANGE THE DATE FORMAT
Login > under system settings section > there are 4 “MYSQL date/time format” settings, change them accordingly. These are simply formats for the MYSQL DATE_FORMAT()
function.
NOT WORKING. DON’T KNOW WHY.
Open the developer’s console, reload the page, and see the error message.
NFC FEATURES ARE “NOT WORKING”!
At the time of writing, Web NFC only works on Android Chrome and Baidu Browser – CanIUse
QUICK REFERENCE
This section is for the developers, a quick walkthrough of the general system structures.
BUILT ON CORE BOXX
Yep, Sotrage Boxx is built on Core Boxx. At least go through the very short 4 steps tutorial here.
FOLDER STRUCTURE
assets/
Public images, Javascript, CSS, etc…lib/
Core engine and library files.API-AAA.php
The API endpoints. Will be deployed athttp://site.com/api/AAA/
.CORE-CCC.php
Core engine files. Try not to mess with these.HOOK-HHH.php
Hooks to modify the behavior of some modules.LIB-LLL.php
Library files.SQL-SSS.php
SQL database files. Can actually delete these after installation.
pages/
HTML pages and template.PAGE-PPP.php
“Normal” pages. Will be deployed athttp://site.com/PPP/
.REPORT-Loader.php
A “special page” to generate reports.TEMPLATE-TTT.php
HTML page template.MAIL-MMM.php
Email templates.
THE FRAMEWORKS
Storage Boxx is built with:
- Bootstrap and Google Material Icons.
- HTML5 QR Code Scanner
- QR Code Generator
- PHP Web Push
- PHP JSON Web Token
- Core Boxx modular PHP framework.
DATABASE TABLES
USERS
Field | Description |
user_id |
The user ID, primary key. |
user_level |
Defaults to “A”dmin for now. Use this if you want to implement user roles. |
user_name |
The user name. |
user_email |
The user’s email address. |
user_password |
The password. Encrypted. |
Field | Description |
user_id |
User ID, primary and foreign key. |
hash_for |
“N” for NFC login token, “P” for password reset. |
hash_code |
Random hash code. |
hash_time |
Timestamp. For expiry and anti-spam. |
hash_tries |
Use this to limit the number of tries, or dish out “strikes”. |
SYSTEM
Field | Description |
setting_name |
Primary key. |
setting_description |
Description of the setting. |
setting_value |
The value of the setting. |
setting_group |
Setting group.
|
Field | Description |
endpoint |
Primary key, web push endpoint. |
data |
JSON-encoded subscription object. |
ITEMS
Field | Description |
stock_sku |
The SKU of the item, primary key. |
stock_name |
Name of the item. |
stock_desc |
Description of the item. |
stock_unit |
Unit of measurement. |
stock_low |
For low stock monitoring. Set to 0 for “no monitoring”. |
stock_qty |
Current quantity in stock. |
Field | Description |
stock_sku |
The SKU of the item. Primary key. |
mvt_date |
Date of movement entry. Primary key. |
mvt_direction |
The direction of the movement.
|
user_id |
The user who made this movement entry. |
mvt_qty |
Quantity moved. |
mvt_left |
Quantity left at the time of movement. |
mvt_notes |
Notes, if any. |
I’m trying Storage Boxx on my hosted web server. It works, at least to show the config page. But when I hit “GO” button there is an error with:
Unable to connect to database – SQLSTATE[HY000] [1045] Access denied for user ‘Sql635819_2’@’31.11.36.236’ (using password: YES)
I think there something wrong in building the DB_USER name, but no result from searching the code base. In my opinion the problem depends from the fact that siet files are on a IF that’s different from MySql DB. My web server is: 31.11.36.236 and my mysql db is: 62.149.150.182. I’ve specified the ip for database server in the setup form.
Please help me.
Cheers
Luigi Visintin
lib/CORE-Config.php – Section (C) database.
hi is there a demo site for storage boxx project.
also looking to hire developer for projects thanks mike
Sorry, there are no demos for all the PHP/Python/Node projects. Don’t think you will want to hire an overpriced developer and content creator. 😉
https://code-boxx.com/faq/#nodemo
https://code-boxx.com/faq/#hire
We should be able to download a database and the files so we can simply upload them to our server 🙂 and connect. Can you provide a database and the files? 🙂 I have fought for two days, and my server won’t do it.
No idea what you are trying to do here… There’s already an automated installer? All the source files are available for download here and on GitHub? If you want to manually install, see “MANUAL INSTALLATION” above.
P.S. If you have zero experience, I will highly suggest you start with the raw basics or hire your own web developer. Good luck.
When i go on login page, apache response “page not found” after a success installation
EDIT – Whoever encounters the same problem in the future, it’s either:
1)
MOD_REWRITE
is enabled, butAllowOverride
is not properly set.2) SSL issues. Apache is not serving the pages and/or static assets properly.
Will try to add more checks, but fingers crossed. PHP has limited or no access to these Apache settings.