⬡
COMPUS QR
Enterprise Asset Management — cosmeticexim.com
❌ Invalid username or password.
Default: admin / compusqr@2026 — change in Settings
Demo credentials:
Username: demo  |  Password: demo123
Read-only access · Cannot change settings or delete data
❌ Invalid demo credentials.
COMPUS QR v2.6 · Cosmetic Exim International · qrcode.cosmeticexim.com
⬡
COMPUS QR
cosmeticexim.com
Not connected
AD
Admin
Administrator
▾
🔍
Workspace
Tools
Database
Not Connected
Configure in DB & API
COMPUS QR›Dashboard
Total Assets
0
Registry count
🗂
QR Codes Generated
0
Lifetime total
⬡
Active / Healthy
0
No issues flagged
✅
Open Issues
0
Need attention
⚠
⚡Quick Actions
🕐Recent Activity
ℹ
No activity yet
Start by generating a QR code
🔌Database Connection Status
⚠
No database connected. Go to Database & API to configure your MySQL connection.
Local storage active. Connect a database for cloud sync and multi-user access.
COMPUS QR›QR Generator
🔖Asset Identity
🔗Link Configuration
QR resolves to:
QR Code Preview
Enter serial number
⬡
Configure and click
Generate QR Code
🏷Label Preview
SERIAL NUMBER
Device Name
COMPUS QR›Batch Generate
ℹ
Batch generation creates uniquely serialised QR codes at scale. Max 500 per run.
⚙Serial Format
MD-2026-00001
🔗Batch Config
📋Generation Log
Awaiting batch…0%
COMPUS QR Batch Engine v2.6 ready.
🗂Preview
No batch yet.
COMPUS QR›Asset Registry
🔍
0 assets
Serial ↕Name ↕CategoryModelLocationAddedStatusScansActions
No assets yet.
COMPUS QR›Field Scan Form
📱
Field technician view after scanning a QR code.
—
Device Name
Manufacturer · Model
Category—
Date—
Location—
Status● Active
Scans0
Notes—
📝 Report an Issue
COMPUS QR›Analytics
Assets
0
🗂
Total Scans
0
📱
Open Issues
0
⚠
Uptime
99.9%
✅
🗺Scans by Region
Asia Pacific
82%
Europe
63%
North America
47%
Middle East
28%
🕐Activity Feed
ℹ
No activity yet
COMPUS QR›Database & API
ℹ
Config is saved permanently in your browser's localStorage and restored on every login. Enter your hosting details once.
🔗Connection Type
🌐REST API Config
🗄MySQL via PHP Proxy
📄JSON Endpoint
📊Google Sheets
🔄Data Sync
Last sync: Never
Local assets: 0
📡Connection Status
○
Not connected.
Type
—
Endpoint
—
Last tested
—
Response time
—
REST API Endpoints
GET/assetsList all assets
GET/assets/{serial}Get single asset
POST/assetsCreate asset
PUT/assets/{serial}Update asset
POST/assets/batchBulk create
POST/reportsSubmit issue report
GET/analytics/summaryAnalytics data
// POST /assets — Create asset fetch('https://qrcode.cosmeticexim.com/compus-api/assets', { method: 'POST', headers: { 'X-API-Key': 'YOUR_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ serial: 'MD-2026-00001', name: 'Vitals Monitor' }) });
🐘
Upload these PHP files to qrcode.cosmeticexim.com — fully pre-configured for your domain.
<?php // FILE: compus-api/index.php // Upload to: qrcode.cosmeticexim.com/compus-api/index.php // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ define('DB_HOST', 'localhost'); // Your cPanel MySQL host define('DB_NAME', 'cosmetic_compusqr'); // Database name (create in cPanel) define('DB_USER', 'cosmetic_qruser'); // DB username define('DB_PASS', 'YourStrongPassword!'); // DB password define('API_KEY', 'cexim-qr-2026-secret'); // Paste same key in COMPUS QR settings header('Content-Type: application/json'); header('Access-Control-Allow-Origin: https://qrcode.cosmeticexim.com'); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS'); header('Access-Control-Allow-Headers: X-API-Key, Content-Type'); if($_SERVER['REQUEST_METHOD']==='OPTIONS'){http_response_code(200);exit();} $key=$_SERVER['HTTP_X_API_KEY']??''; if($key!==API_KEY){http_response_code(401);echo json_encode(['error'=>'Unauthorized']);exit();} try{ $pdo=new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=utf8mb4",DB_USER,DB_PASS); $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); }catch(Exception $e){http_response_code(500);echo json_encode(['error'=>'DB connection failed']);exit();} $method=$_SERVER['REQUEST_METHOD']; $path=trim($_SERVER['PATH_INFO']??'/','/'); $parts=explode('/',$path); $resource=$parts[0]??''; $id=$parts[1]??null; $body=json_decode(file_get_contents('php://input'),true)??[]; switch($resource){ case 'assets': if($method=='GET'&&!$id){ $s=$pdo->query('SELECT * FROM assets ORDER BY created_at DESC'); echo json_encode(['data'=>$s->fetchAll(PDO::FETCH_ASSOC),'count'=>$s->rowCount()]); }elseif($method=='GET'&&$id){ $s=$pdo->prepare('SELECT * FROM assets WHERE serial=?'); $s->execute([$id]);echo json_encode($s->fetch(PDO::FETCH_ASSOC)); }elseif($method=='POST'){ $s=$pdo->prepare('INSERT INTO assets (serial,name,category,manufacturer,model,location,url,notes,status) VALUES (?,?,?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE name=VALUES(name),updated_at=NOW()'); $s->execute([@$body['serial'],@$body['name'],@$body['category'],@$body['manufacturer'],@$body['model'],@$body['location'],@$body['url'],@$body['notes'],'Active']); echo json_encode(['success'=>true]); }break; case 'reports': if($method=='POST'){ $s=$pdo->prepare('INSERT INTO issue_reports (serial,issue_type,description,reporter,priority) VALUES (?,?,?,?,?)'); $s->execute([$body['serial'],$body['issue_type'],$body['description'],$body['reporter'],$body['priority']]); echo json_encode(['success'=>true]); }break; default: http_response_code(404);echo json_encode(['error'=>'Not found']); } ?>
<?php // FILE: scan.php // Upload to: qrcode.cosmeticexim.com/scan.php // QR code URL: https://qrcode.cosmeticexim.com/scan.php?id=SERIAL define('DB_HOST','localhost'); define('DB_NAME','cosmetic_compusqr'); define('DB_USER','cosmetic_qruser'); define('DB_PASS','YourStrongPassword!'); $serial=htmlspecialchars($_GET['id']??''); if(!$serial){die('<h2>Invalid QR Code</h2>');} $pdo=new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME,DB_USER,DB_PASS); $s=$pdo->prepare('SELECT * FROM assets WHERE serial=?'); $s->execute([$serial]); $asset=$s->fetch(PDO::FETCH_ASSOC); if(!$asset){die('<h2>Asset not found: '.$serial.'</h2>');} // Log scan $pdo->prepare('INSERT INTO scan_logs (serial,ip,user_agent) VALUES (?,?,?)') ->execute([$serial,$_SERVER['REMOTE_ADDR'],$_SERVER['HTTP_USER_AGENT']??'']); $pdo->prepare('UPDATE assets SET scan_count=scan_count+1,last_scanned=NOW() WHERE serial=?') ->execute([$serial]); if($_SERVER['REQUEST_METHOD']==='POST'&&!empty($_POST['issue_type'])){ $pdo->prepare('INSERT INTO issue_reports(serial,issue_type,description,reporter,priority) VALUES(?,?,?,?,?)') ->execute([$serial,$_POST['issue_type'],$_POST['description'],$_POST['reporter'],$_POST['priority']]); $pdo->prepare('UPDATE assets SET status="Issue" WHERE serial=?')->execute([$serial]); $ok=true; } // Redirect to COMPUS QR scan form with asset ID header('Location: https://qrcode.cosmeticexim.com/index.html#scan='.urlencode($serial)); exit(); ?>
🗄 MySQL Schema — Run this in cPanel phpMyAdmin
-- DATABASE: cosmetic_compusqr -- Run in: cPanel → phpMyAdmin → SQL tab CREATE DATABASE IF NOT EXISTS cosmetic_compusqr CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE cosmetic_compusqr; CREATE TABLE IF NOT EXISTS assets ( id INT AUTO_INCREMENT PRIMARY KEY, serial VARCHAR(100) UNIQUE NOT NULL, name VARCHAR(255), category VARCHAR(100), manufacturer VARCHAR(255), model VARCHAR(100), location VARCHAR(255), url TEXT, notes TEXT, status ENUM('Active','Issue','Inactive') DEFAULT 'Active', scan_count INT DEFAULT 0, last_scanned DATETIME, created_at DATETIME DEFAULT NOW(), updated_at DATETIME ON UPDATE NOW() ); CREATE TABLE IF NOT EXISTS issue_reports ( id INT AUTO_INCREMENT PRIMARY KEY, serial VARCHAR(100) NOT NULL, issue_type VARCHAR(100), description TEXT, reporter VARCHAR(255), priority ENUM('Low','Medium','High','Critical') DEFAULT 'Medium', resolved TINYINT(1) DEFAULT 0, created_at DATETIME DEFAULT NOW(), INDEX(serial) ); CREATE TABLE IF NOT EXISTS scan_logs ( id INT AUTO_INCREMENT PRIMARY KEY, serial VARCHAR(100) NOT NULL, ip VARCHAR(45), user_agent TEXT, scanned_at DATETIME DEFAULT NOW(), INDEX(serial) ); CREATE INDEX idx_assets_status ON assets(status); CREATE INDEX idx_assets_serial ON assets(serial);
COMPUS QR›Settings
🏢Organisation
👥Users & Access Control
Change Admin Password
⬡QR Code Defaults
Print serial on label
Add serial text below QR code when printing
Auto-save to registry
Automatically save each generated code
📤Data & Backup
Export
Import
Danger Zone
Asset Detail
Quick Help — COMPUS QR
1. Generate QR
QR Generator → enter serial → Generate
2. Connect DB
Database & API → enter URL → Test → Save
3. Upload PHP
Copy scripts from DB & API → PHP Scripts
4. Sync data
Click Sync DB button to push assets
5. Change password
Settings → Users & Access
Admin login
admin / compusqr@2026 (change in settings)
Demo login
demo / demo123 (read-only)
🔑 Change Password