@86d-app/qr-code
v0.0.42
Published
QR code generation and management module for 86d commerce platform
Readme
[!WARNING] This project is under active development and is not ready for production use. Please proceed with caution. Use at your own risk.
📚 Documentation: 86d.app/docs/modules/qr-code
QR Code Module
Generate, manage, and track QR codes for products, collections, pages, orders, or custom URLs with scan analytics.
Installation
npm install @86d-app/qr-codeUsage
import qrCode from "@86d-app/qr-code";
const module = qrCode({
defaultSize: "256",
defaultFormat: "svg",
errorCorrection: "M",
});Configuration
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| defaultSize | string | "256" | Default QR code size in pixels |
| defaultFormat | string | "svg" | Output format (svg or png) |
| errorCorrection | string | "M" | Error correction level (L, M, Q, H) |
Store Endpoints
| Method | Path | Description |
|--------|------|-------------|
| GET | /qr-codes/:id | Get QR code details |
| POST | /qr-codes/:id/scan | Record a scan event |
Admin Endpoints
| Method | Path | Description |
|--------|------|-------------|
| GET | /admin/qr-codes | List all QR codes |
| POST | /admin/qr-codes/create | Create a QR code |
| POST | /admin/qr-codes/batch | Batch create QR codes |
| GET | /admin/qr-codes/:id | Get QR code details |
| POST | /admin/qr-codes/:id/update | Update a QR code |
| POST | /admin/qr-codes/:id/delete | Delete a QR code |
| GET | /admin/qr-codes/:id/scans | List scans for a QR code |
Controller API
interface QrCodeController extends ModuleController {
create(params: { label: string; targetUrl: string; ... }): Promise<QrCode>;
get(id: string): Promise<QrCode | null>;
getByTarget(targetType: QrCodeTargetType, targetId: string): Promise<QrCode | null>;
update(id: string, params: Partial<QrCode>): Promise<QrCode | null>;
delete(id: string): Promise<boolean>;
list(params?: { targetType?: QrCodeTargetType; isActive?: boolean; ... }): Promise<QrCode[]>;
recordScan(id: string, params?: { userAgent?: string; ipAddress?: string; referrer?: string }): Promise<QrScan | null>;
getScanCount(id: string): Promise<number>;
listScans(qrCodeId: string, params?: { take?: number; skip?: number }): Promise<QrScan[]>;
createBatch(items: Array<{ label: string; targetUrl: string; ... }>): Promise<QrCode[]>;
}Types
- QrCodeTargetType —
"product" | "collection" | "page" | "order" | "custom" - QrCodeFormat —
"svg" | "png" - QrCodeErrorCorrection —
"L" | "M" | "Q" | "H" - QrCode — QR code with target reference, format settings, and scan counter
- QrScan — Individual scan record with user agent, IP, and referrer
Components
Admin
- QrCodeList — Paginated QR code list with target type and active status filters. Inline create form (single + batch mode). Delete with confirmation.
- QrCodeDetail — Single QR code view with editable fields, overview cards (target type, status, scan count, format), and scan history table with pagination.
Notes
recordScanboth increments the QR code'sscanCountand creates a separateQrScanrecord for detailed analytics.getByTargetfinds QR codes by their target type and ID, useful for checking if a product already has a QR code.createBatchprocesses items sequentially and emits individualqr.createdevents plus oneqr.batch.createdevent.
