Full A1-Dorak Feature Set

Everything your business needs to manage customer queues - from the self-service kiosk to executive reports. Built, deployed, and battle-tested in real businesses.

Multi-tenant Banks & Counters Kiosk Printing Civil ID Service Desk Display & Voice Real-time Reports Licensing Admin Security Deployment
🏦

Banks & Multi-Counter Service Centers

Multiple cashiers in parallel, mixed services, VIP clients, staff skills - all handled.
👥

Multiple Cashiers, Same Service

Three counters serving 'Deposit' in parallel - system routes tickets to whichever cashier hits 'Next' first. No conflicts, no lost tickets.

🔀

Multi-Service Counters

Counter 5 = Deposit + Withdrawal + Customer Service. Cashier pulls from any of their queues. Perfect for off-peak hours.

Room.AdditionalServiceIds[]

VIP / Premium Counters

VIP tickets route straight to a VIP counter. Exclusive flag locks the counter to VIP only, or 'flexible' allows fallback.

Room.Tier · ExclusiveTier
🎯

Skill-Based Routing

Cashier speaks Russian? Tag skill='ru' on their profile. Russian customer arrives → system prefers them. Same for Loans/FX/specialties.

User.Skills[] · Service.RequiredSkills[]
🔄

Flexible Cashier Swap

Cashier on break? One-tap release. Colleague claims it. Every move logged for audit review.

📊

Branch Performance

Avg handling time per cashier, daily peaks, top services, VIP ratio - data the branch manager actually uses.

🏥

Multi-Tenant Architecture

Multiple businesses on one server with isolated ticket numbering and access.
🏢

Isolated Tenants

Each business has its own customers, tickets, and settings - full data isolation between clinics.

TenantId on every entity
🔢

Independent Numbering

D-001 for one section, G-001 for another - daily auto-reset per clinic.

🌐

9 Languages

Arabic, English, Italian, German, Russian, Ukrainian, French, Urdu, Turkish - with auto region detection.

🔄

Native RTL

Not a translation - designed Arabic-first with local numerals, dates, and voice.

🤖

Self-Service Kiosk

Issue with a tap, print, read ID, and auto-reset in 30 seconds.
👆

Touch UI

Full-screen large buttons, high contrast, full RTL - pick branch then service in one tap.

Auto-Reset

30 seconds idle → back to home screen for the next patient. Visible countdown bar.

🔒

Locked Kiosk Mode

Disables F11, Alt-Tab, right-click, zoom - can't escape without staff password.

📡

Auto-Discovers Tenants

Pulls active tenants from the server live - no manual config per kiosk.

🖨

Thermal Printing - 3 Transports

Bluetooth, USB, Network - every common 58mm/80mm thermal printer.
📶

Bluetooth (Web Bluetooth)

Browser pairs directly with the printer. Supports Goojprt, MUNBYN, Xprinter, and more.

Web Bluetooth · Nordic UART · ESC/POS
🔌

USB (Local Agent)

Lightweight Node.js agent on the kiosk PC receives print commands from the browser.

node-thermal-printer · port 7001
🌐

Network (TCP 9100)

Server opens TCP directly to network printer. Epson TM, Star TSP, Bixolon - all supported.

CP864 Arabic · ESC/POS · GS V 0 cut
🇰🇼

Arabic on Receipt

Large ticket number, Arabic service name, patient name, timestamp, auto-cut.

🎯

Smart Routing

Each service routes to its own printer (e.g., dental, reception) - system picks automatically.

📊

Print Telemetry

System logs last success / last failure per printer for instant troubleshooting.

💳

Civil ID Smart-Card Reader

Kuwaiti Civil ID at the kiosk → auto-fill full name and ID number.
📥

Instant Read

Insert card → name and Civil ID number auto-filled in 2 seconds.

🔐

Encrypted at Rest

Civil ID stored encrypted (AES) - useless if the database is exfiltrated.

AES-256 + per-tenant key
🚫

Skippable

Non-Kuwaiti patients or those without ID → tap 'skip' for an anonymous ticket.

🔌

Local Reader Agent

Local PC/SC agent - no internet, no government API needed.

Doctor / Service Desk

One screen per room - call next, defer, skip, finish.
📣

Call Next

One click → system picks the next ticket by priority, time, and room.

⏸️

Defer

Patient absent or needs labs? Defer 5/10/15 min without losing their slot.

⏭️

Skip

Patient didn't show after 3 calls → marked 'skipped' and the queue moves on.

🚪

Open / Close Room

Doctor on break? Close the room with a click - auto-routing skips it.

📋

Live Waiting List

Live table of all waiting patients, issue times, priorities, names, IDs.

📝

Quick Notes

Per-ticket notes ('penicillin allergy') - visible to the next staff member.

📺

Call Displays + Voice Announcements

Big waiting-room screens + LED above each room + Arabic voice calls.
📣

Arabic Voice

'Ticket D-007 to Dental Room 1' - natural voice, works offline.

🖥️

Big Display

Full-screen, last 5 called tickets, blink on the latest, filter by section.

💡

Counter LEDs

Small LED above each door shows the called ticket number - red, visible from afar.

MQTT · A1Q-Hub firmware
🔄

Per-Section Filtering

Display at Dental shows Dental tickets only; reception displays show all.

Real-time Sync

SignalR + MQTT - every device updates instantly with zero reload.

SignalR for Web

Persistent WebSocket between server and all browsers - sub-100ms updates.

📡

MQTT for Devices

LED panels, printer devices, ESP32 kiosks - all speak MQTT with the server.

a1q/{tenant}/counter/{room}/show
🔁

Auto-Reconnect

Network blip? All devices auto-reconnect and resync to current state.

🔄

Composite Publisher

One server event → published to SignalR and MQTT simultaneously, no lag.

📊

Reports & Analytics

Live KPIs + daily / weekly / monthly reports + Excel export.
⏱️

Avg Wait Time

Per service, per room, per hour - detects bottlenecks automatically.

🔢

Ticket Counts

Daily/weekly/monthly, by service, by staff, by channel (kiosk/reception/mobile).

🏆

Top Services

Service ranking by demand - plan expansion and staffing.

📥

Excel Export

Any report → one-click Excel, preserving Arabic and RTL.

🔑

License Server

4 plans, HMAC keys, annual renewal, daily expiry sweep, enforced capacity limits.
📦

4 Plans

Trial (14d, 3 rooms) · Starter (5 rooms, 199 KWD) · Pro (15 rooms, 549 KWD) · Enterprise (1899 KWD).

🔐

HMAC-SHA256 Keys

Crockford-Base32 keys (no I/L/O/U), readable from a printed invoice, unguessable.

A1Q-XXXXX-XXXXX-XXXXX-XXXXX
📅

Annual Renewal

Renewal extends expiry + maintenance window, even if expired days ago.

🔄

Daily Expiry Sweep

Background worker every 24h flips expired licenses and emits alerts.

🚦

Enforced Capacity Caps

Try to add room #16 on Professional? HTTP 402 + 'upgrade plan' UI dialog.

LicenseGuard · LicenseLimitException
🛡

Offline after Activation

One-time online activation; runs offline forever after.

⚙️

Admin Panel

Every setting in one place - tenants, users, services, rooms, printers.
🏥

Tenants

Create tenants, set timezone and locale, plan limits.

👥

Users & Roles

SuperAdmin · TenantAdmin · Reception · Doctor · Viewer - distinct permissions per role.

Services

Define services (Dental, General, Pediatrics…), code, color, sort order, group.

Rooms

Define rooms, link to service, open/close, multi-floor.

🖨

Printers

Add printers (BT/USB/Net), instant test print, track success/failure.

Counter LEDs

Add LED panels, link to rooms, test calls, firmware management.

Licenses

Current license, status, expiry, 30-day warning, activate, renew.

🧹

Reset Today

End of day → one click clears today's tickets, numbering resets to 001.

🔒

Security & Privacy

JWT roles + encrypted patient data + tenant isolation + audit logging.
🎫

JWT Tokens

HS256 signed with ≥32-char key, session duration configurable, tenant claim required.

🔐

Civil ID at Rest

AES with per-tenant key - even the tech admin can't read raw IDs.

🚧

Tenant Isolation

Middleware enforces JWT-vs-header tenant match - no cross-tenant access ever.

📜

Strict CORS

Explicit allowed origins only, no wildcards, credentials supported.

🚀

Deployment & Operation

Full On-Premise, embedded LiteDB, single Windows installer, no SQL Server needed.
🏠

Fully On-Premise

Runs inside the clinic network - data never leaves your premises.

💾

Embedded LiteDB

Single .litedb file - no SQL Server install, no licensing fees.

📦

Single Windows Installer

One .exe installs backend + every frontend (kiosk, display, admin) in 3 minutes.

📱

Mobile PWA

Patients add to home screen and track position live - no app store.

🌐

Works on WiFi

Kiosk, call displays, and staff workstations all on the same WiFi - no cabling.

🔧

Setup Wizard

First run: 5 questions create admin user, services, rooms, and a 14-day trial license.

Try Every Feature Free for 14 Days

No credit card · Key arrives in seconds · Cancel anytime

🚀 Start Now