Installation
SmartPad Installation Guide
This document will guide you through the basic setup of SmartPad, including inventory integration and database initialization.
🧳 Inventory Setup
📦 QB Inventory, QS Inventory, LJ Inventory, PS Inventory, Core Inventory
If you are using these inventories you must add the following items to your qb-core/shared/items.lua
file: or wherever the item list is.
smartpad = {
name = 'smartpad',
label = 'SmartPad',
weight = 2000,
type = 'item',
image = 'tablet.png',
unique = true,
useable = true,
shouldClose = true,
description = 'SmartPad'
},
powerbank = {
name = 'powerbank',
label = 'Powerbank',
weight = 200,
type = 'item',
image = 'powerbank.png',
unique = true,
useable = true,
shouldClose = true,
description = 'Capacity: 10000mAh | Output: 5V/2.1A | USB Type-C.'
},
weaponlicense = {
name = 'weaponlicense',
label = 'Weapon License',
weight = 0,
type = 'item',
image = 'weapon_license.png',
unique = true,
useable = true,
shouldClose = true,
description = 'Weapon License'
},
⚠️ Don't forget to assign the appropriate
client.export
functions according to your implementation.
SQL File
Normally, SQL is installed automatically, but if it is not installed, you can run this SQL directly.
CREATE DATABASE IF NOT EXISTS kibra_smartpad CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE kibra_smartpad;
CREATE TABLE IF NOT EXISTS kibra_smartpad_tablets ( id INT NOT NULL AUTO_INCREMENT, serialnumber VARCHAR(64) NOT NULL, owner VARCHAR(255) DEFAULT NULL, data JSON NOT NULL DEFAULT (JSON_ARRAY()), notifications JSON NOT NULL DEFAULT (JSON_ARRAY()), gallery JSON NOT NULL DEFAULT (JSON_ARRAY()), albums JSON NOT NULL DEFAULT (JSON_ARRAY()), email VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uq_tablets_serial (serialnumber), KEY idx_tablets_owner (owner) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_allergies ( id INT NOT NULL AUTO_INCREMENT, citizen_id VARCHAR(64) DEFAULT NULL, drug_name VARCHAR(100) DEFAULT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_allergies_citizen (citizen_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_crime_records ( id INT NOT NULL AUTO_INCREMENT, offenders JSON NOT NULL DEFAULT (JSON_ARRAY()), crime_id VARCHAR(64) NOT NULL, date DATETIME NOT NULL, officer_name VARCHAR(100) NOT NULL, officer_id VARCHAR(50) DEFAULT NULL, articles JSON NOT NULL DEFAULT (JSON_ARRAY()), description TEXT DEFAULT NULL, location VARCHAR(255) DEFAULT NULL, fine_amount INT NOT NULL DEFAULT 0, jail_time INT NOT NULL DEFAULT 0, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, media JSON NOT NULL DEFAULT (JSON_ARRAY()), witnesses JSON NOT NULL DEFAULT (JSON_ARRAY()), vehicle_data JSON NOT NULL DEFAULT (JSON_ARRAY()), status TINYINT NOT NULL DEFAULT 0, approved_by VARCHAR(255) DEFAULT NULL, reason TEXT DEFAULT NULL, casedate DATETIME NOT NULL, lawyer VARCHAR(255) DEFAULT NULL, timeline JSON NOT NULL DEFAULT (JSON_ARRAY()), PRIMARY KEY (id), KEY idx_crime_records_crime_id (crime_id), KEY idx_crime_records_officer (officer_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_newsapplications ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, age INT NOT NULL, role VARCHAR(255) NOT NULL, experience TEXT NOT NULL, motivation TEXT NOT NULL, cid VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_newsapps_cid (cid) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_news ( id INT NOT NULL AUTO_INCREMENT, code VARCHAR(255) NOT NULL, data JSON NOT NULL DEFAULT (JSON_ARRAY()), author VARCHAR(255) NOT NULL, media JSON NOT NULL DEFAULT (JSON_ARRAY()), category VARCHAR(255) NOT NULL, tags JSON NOT NULL DEFAULT (JSON_ARRAY()), status TINYINT NOT NULL DEFAULT 0, published_at DATETIME DEFAULT NULL, comments JSON NOT NULL DEFAULT (JSON_ARRAY()), likes INT NOT NULL DEFAULT 0, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_news_code (code), KEY idx_news_category (category), KEY idx_news_status (status), KEY idx_news_published_at (published_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_court_hearings ( id INT NOT NULL AUTO_INCREMENT, case_id VARCHAR(50) NOT NULL, date DATE NOT NULL, time TIME NOT NULL, assigned_judge VARCHAR(100) NOT NULL, courtroom JSON NOT NULL DEFAULT (JSON_ARRAY()), notes TEXT DEFAULT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_hearings_case (case_id), KEY idx_hearings_datetime (date,time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_doctor_notes ( id INT NOT NULL AUTO_INCREMENT, citizen_id VARCHAR(64) DEFAULT NULL, doctor_name VARCHAR(100) DEFAULT NULL, note TEXT DEFAULT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_doctor_notes_citizen (citizen_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_invoices ( id INT NOT NULL AUTO_INCREMENT, ikey VARCHAR(255) NOT NULL, owner VARCHAR(255) NOT NULL, date DATETIME NOT NULL, duedate DATETIME NOT NULL, content JSON NOT NULL DEFAULT (JSON_ARRAY()), totalamount DECIMAL(12,2) NOT NULL DEFAULT 0, status TINYINT NOT NULL DEFAULT 0, notes LONGTEXT NOT NULL, job VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uq_invoices_ikey (ikey), KEY idx_invoices_owner (owner), KEY idx_invoices_status (status), KEY idx_invoices_dates (date, duedate) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_mails ( id INT NOT NULL AUTO_INCREMENT, receiver VARCHAR(255) NOT NULL, from_name VARCHAR(255) NOT NULL, data JSON NOT NULL DEFAULT (JSON_ARRAY()), from VARCHAR(255) NOT NULL, type TINYINT NOT NULL DEFAULT 0, date DATETIME NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_mails_receiver (receiver), KEY idx_mails_from (from), KEY idx_mails_date (date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_mdt_announcements ( id INT NOT NULL AUTO_INCREMENT, title VARCHAR(100) NOT NULL, message TEXT NOT NULL, announcement_type ENUM('General','Emergency','Warning','Info') DEFAULT 'General', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, created_by VARCHAR(100) NOT NULL, PRIMARY KEY (id), KEY idx_mdt_ann_created_by (created_by), KEY idx_mdt_ann_type (announcement_type) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_mdt_history ( id INT NOT NULL AUTO_INCREMENT, created_by VARCHAR(255) NOT NULL, transaction TEXT NOT NULL, casenumber VARCHAR(255) NOT NULL, date DATETIME NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_mdt_hist_case (casenumber), KEY idx_mdt_hist_date (date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_treatments ( id INT NOT NULL AUTO_INCREMENT, patient_id VARCHAR(64) DEFAULT NULL, drug VARCHAR(100) DEFAULT NULL, responsible VARCHAR(100) DEFAULT NULL, date DATETIME DEFAULT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_treatments_patient (patient_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_vehicle_crimes ( id INT NOT NULL AUTO_INCREMENT, case_id VARCHAR(255) NOT NULL, cars JSON NOT NULL DEFAULT (JSON_ARRAY()), dname VARCHAR(255) NOT NULL, fine_amount DECIMAL(12,2) NOT NULL DEFAULT 0, crimes JSON NOT NULL DEFAULT (JSON_ARRAY()), date DATETIME NOT NULL, location VARCHAR(255) DEFAULT NULL, officer_id VARCHAR(50) DEFAULT NULL, officer_name VARCHAR(100) DEFAULT NULL, notes TEXT DEFAULT NULL, media JSON DEFAULT NULL, vehicle_data JSON NOT NULL DEFAULT (JSON_ARRAY()), created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_vehicle_crimes_case (case_id), KEY idx_vehicle_crimes_date (date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_wanted_people ( id INT NOT NULL AUTO_INCREMENT, cid VARCHAR(255) NOT NULL, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50) NOT NULL, crime_description TEXT NOT NULL, wanted_since DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, last_seen_location VARCHAR(255) DEFAULT NULL, danger_level ENUM('Low','Medium','High') DEFAULT 'Low', added_by VARCHAR(100) NOT NULL, medias JSON NOT NULL DEFAULT (JSON_ARRAY()), created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_wanted_people_cid (cid), KEY idx_wanted_people_level (danger_level) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_wanted_vehicles ( id INT NOT NULL AUTO_INCREMENT, plate VARCHAR(10) NOT NULL, model VARCHAR(100) NOT NULL, modellabel VARCHAR(255) NOT NULL, color VARCHAR(50) DEFAULT NULL, last_seen_location VARCHAR(255) DEFAULT NULL, wanted_since DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, danger_level ENUM('Low','Medium','High') DEFAULT 'Low', reason TEXT NOT NULL, added_by VARCHAR(100) NOT NULL, medias JSON NOT NULL DEFAULT (JSON_ARRAY()), status TINYINT NOT NULL DEFAULT 1, approved_by VARCHAR(255) DEFAULT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_wanted_vehicles_plate (plate), KEY idx_wanted_vehicles_status (status), KEY idx_wanted_vehicles_level (danger_level) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_weapon_licenses ( id INT NOT NULL AUTO_INCREMENT, citizen_id VARCHAR(255) NOT NULL, playername VARCHAR(50) NOT NULL, dob DATE NOT NULL, license_number VARCHAR(50) NOT NULL, weapon_type VARCHAR(100) NOT NULL, expiration_date DATE NOT NULL, status ENUM('Active','Suspended','Revoked') DEFAULT 'Active', issued_by VARCHAR(100) NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uq_weapon_licenses_number (license_number), KEY idx_weapon_licenses_citizen (citizen_id), KEY idx_weapon_licenses_status (status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS kibra_smartpad_resmoncloud ( id INT NOT NULL AUTO_INCREMENT, devices JSON NOT NULL DEFAULT (JSON_ARRAY()), owner VARCHAR(255) NOT NULL, firstname VARCHAR(255) NOT NULL, lastname VARCHAR(255) NOT NULL, birthdate DATE NOT NULL, password VARCHAR(255) NOT NULL, mail VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uq_resmoncloud_owner (owner), KEY idx_resmoncloud_mail (mail) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
📷 Camera App Installation
Overview
The Camera App on your tablet captures photos and videos, which are then uploaded and stored securely on fivemanage.com.
To enable upload functionality, each user must obtain a personal API key.
📌 Steps to Get Started
1. Visit the API Key Portal
Go to https://fivemanage.com/developer and sign in with your account.
2. Generate Your API Key
After logging in:
Navigate to the API Keys section.
Click "Generate New Key".
Copy the generated key and store it somewhere safe.
3. Update Your Project Configuration
In your camera.json
file (under /shared
folder), structure your data as follows:
{
"photo": "https://fivemanage.com/media/photo1.jpg",
"video": "https://fivemanage.com/media/video1.mp4",
}
⚠️ Important Notes
Do not share your API key with others.
If your key is compromised, revoke and regenerate it immediately.
Uploaded media is only accessible via authenticated requests.
🧪 Testing Uploads
After configuring your key, try capturing media using the Camera App. You should see files uploaded to https://fivemanage.com/media/
.
If any issue occurs, verify:
Your API key is correct and active.
Your internet connection is stable.
🧬 SQL Setup
All necessary SQL files are installed automatically during the first resource run. You do not need to import anything manually.
✅ Make sure the database connection is properly configured in your
server.cfg
andqb-core or es_extended or qbx_core
.
Installing Dependencies (node_modules
)
node_modules
)After placing the kibra-smartpad
folder inside your server's resources
directory, you must install the required dependencies to ensure the script works correctly.
Steps
Open your terminal and navigate to the script's directory:
cd resources/kibra-smartpad
Install all dependencies:
npm install
This command will automatically create the
node_modules
folder with all the necessary packages. Never copy node_modules manually. Always usenpm install
.(If the script uses a frontend/build step) Build the project:
npm run build
The build folder is usually included. If you get errors about missing build files, run this command.
If you see any errors about missing modules, just run npm install
and try again.
🔧 Dependencies & Start Order
To ensure the SmartPad script works properly, 0r_lib
must be installed on your server.
✅ Required Start Order in server.cfg
:
server.cfg
:ensure yourcore
ensure oxmysql
ensure 0r_lib
ensure ox_lib
ensure kibra-smartpad
📌 Always start
0r_lib
beforekibra-smartpad
to prevent any missing export errors.
🔌 Optional Compatible Scripts
SmartPad is also compatible with the following scripts, offering additional integration:
0R Housing – House-related app support for SmartPad.
Wais Bodycam V2 – EMS/Police bodycam viewer integration.
Last updated