Cruz Hardware & Construction Supply · Marikina

Self-Service Kiosk — Operating Guide & Specification

How the aisle-finder kiosk works, screen by screen: what a customer does, what the staff receives, what the hardware needs to be, and what has to be wired to the store's inventory system before it goes live.

DocumentKiosk spec v1.0
StatusPrototype · sample data
Applies toKiosk 02, ground floor
5Steps to a request
33Sample item lines
12Aisles & yard zones
0Payments handled

01What the kiosk does

The kiosk answers the four questions customers most often bring to the counter — what does it cost, do you have it, where is it, and can someone pull it for me — so the counter staff can spend their time preparing orders instead of walking the aisles.

It does

  • Price check by name, brand, SKU, barcode or category
  • Live on-hand quantity, with in stock / low stock / out of stock
  • Exact location — aisle, bay and shelf, plus a floor plan
  • Full product details: sizes, coverage, ratings, standards
  • A multi-item request list the customer checks and confirms
  • A printed order slip with a request number and QR code, taken to the cashier
  • Holds the stock on that slip for 15 minutes while the customer pays

It does not

  • Take payment — no cash, card or e-wallet, ever
  • Act as a POS terminal or issue official receipts
  • Release anything before payment — staff pull nothing until the cashier confirms
  • Apply discounts, or senior and PWD deductions — those are computed at the counter
  • Store customer names, numbers or any personal data
Why it matters Every amount the kiosk shows is a shelf-price estimate. The official amount is computed at the checkout lane. Keep this wording on screen — it is what keeps the kiosk out of POS territory.

Safeguards built into the flow

A kiosk that lets anyone queue up work for the staff invites two problems: orders nobody pays for, and stock promised twice. Each one is closed in the flow itself, not by asking staff to be careful.

The holeWhat the kiosk does about it
Someone orders and never pays Nothing is pulled until the cashier confirms payment. The slip holds the stock for 15 minutes, then releases it automatically; staff can also cancel a slip at the counter.
Two customers ordering the same last pieces Stock held by an unpaid slip is subtracted from what the next customer sees as available, so the same three pieces cannot be promised twice.
Ordering more than the branch has A list with a line above the available quantity cannot be turned into an order slip at all — the customer is never charged for stock that cannot be pulled.
Staff pulling an unpaid order The queue shows Awaiting payment with a “do not pull” marker and a countdown. Confirming payment is a cashier action, separate from picking.
Someone else claiming the items Goods are released only against the official receipt, which only the paying customer has. The request number alone claims nothing.
Arguing about the price at the counter The slip is labelled an estimate and carries the time its prices were read; the cashier's amount is the official one and is computed before payment.
A customer walking away mid-list The idle timeout clears the session and the list. If a slip was already issued, its hold expires on its own.

02The customer flow

One session runs top to bottom and ends at the cashier. The kiosk issues an order slip; the staff prepare nothing until the payment on that slip is confirmed. The only loop is the one that matters — the customer can keep adding items until the slip is issued.

Welcome screen Promo loop · “Touch to start” touch anywhere Display preference Bright or dark · store default Task menu Price check · directory · info · request pick a task directory Floor plan Browse aisle by aisle Find the item Keyboard · category · barcode scan open a result Item details Price · available · aisle, bay, shelf Quantity Checked against what is available add to list Your list — check it Change quantity · remove · tick “I checked my list” send — only after the tick add another item Order slip issued Request number · QR · printable slip · holds stock 15 min customer walks to the cashier Cashier — pay first Official amount · receipt issued payment confirmed — only now is it pulled Staff pull, then release Handed over against the receipt
Solid boxes are kiosk screens; dashed boxes happen away from the kiosk. Two gates control the flow: the customer must confirm the list before a slip exists, and the cashier must confirm payment before anything is pulled from the shelf.

Mapped to the original seven-step brief

BriefWhere it lives in the kioskNotes
1. Welcome screenAttract screenPromo loop, three panels, 5-second rotation. Any touch starts a session.
2. Task selectionTask menuFour tiles. The choice changes what opens next — see §3.
3. Product searchFind the itemOn-screen keyboard, category chips, barcode scan.
4. Inventory & locationItem detailsStock, price, aisle · bay · shelf, walking directions, floor plan.
5. Item selection / prepQuantity → Your listAvailability is checked per line against what is actually free, and the whole list is confirmed before a slip is issued.
6. ConfirmationOrder slip issuedRequest number, QR code, printed slip, live status, and a countdown on the stock hold.
7. CheckoutNot in the kiosk — but it gates the flowThe customer pays first. Preparation starts only when the cashier confirms payment, and the goods are released against the receipt.

03Screen-by-screen guide

This is the section to hand to a new staff member. Each entry says what the customer sees and what they touch.

01

Welcome screen

idle state · returns here after 90 seconds of no touch

A rotating panel of this week's promos on the right, the store hours and the prep-counter location on the left, and a large “Touch to start”. The whole screen is the button.

Touch anywhere
02

Display preference

first screen of every session

Two large previews — bright and dark — so the customer can pick what is easier on their eyes before reading anything. The choice is remembered in the browser and can be changed any time from the top-right button. “Keep the store default” follows the operating system setting.

Bright displayDark displayKeep the store default
03

Task menu

four tiles · the choice changes the next screen

Find an item / price check and Product information both open the search, but product information opens the item on its specifications tab. Store directory opens the floor plan instead. Request items opens the search and then skips straight to the quantity screen when an item is opened.

Find an itemStore directoryProduct informationRequest itemsScan a barcode
04

Find the item

search · category chips · barcode

Touching the search field raises the keyboard from the bottom of the screen. Results update as each letter is entered — matching on product name, brand, SKU, barcode, category and aisle; every word typed must match. The results area only ever shows whole cards: the kiosk measures the space and pages the rest, so a price is never cut off. While the keyboard is up, results switch to compact rows.

Tap the field to typeCategory chipsScan barcodeBack / Next pageDone — hides keyboard
05

Item details

two tabs · where to find it, product details

Price per unit with VAT noted, the stock pill and the counted quantity, then the location block — aisle, bay and shelf as three large signage tiles — walking directions in plain language, and the floor plan with the aisle highlighted. The second tab carries the full specifications and the barcode.

Where to find itProduct detailsSearch againAdd to my list
06

Quantity

per item · availability checked before adding

Large plus and minus buttons, quick amounts (1, 2, 5, 10, 20, 50 — capped at what is on hand), and a live availability line. Asking for more than the counted stock does not block the customer; it warns that staff will confirm the balance. If the item is already on the list, the screen says how many are on it and adds on top.

− / +Quick amountsAdd to my listBack to the item
07

Your list — check it

the verification gate · nothing is sent before this

Every line shows a picture, the name, brand and SKU, where it will be pulled from, a quantity stepper, the line total and a remove button. Lines asking for more than the available quantity are highlighted in amber and block the slip entirely until they are lowered. The summary counts the items and pieces and gives an estimated total. “Get my order slip” stays disabled until the customer ticks “I checked my list” — and that tick clears itself whenever a quantity changes.

− / + per lineRemoveAdd another itemI checked my listGet my order slip
08

Order slip issued

pay first · request number · QR · printed slip · live status

One request number covers the whole list. The slip is headed “Pay first at the cashier” and carries every item with its quantity and pull location, the amount to pay as an estimate, the time the prices were read, and a clear “not a receipt”. A red banner states that nothing is being prepared yet and counts down the 15 minutes the stock is held. The moment the cashier confirms payment, the banner turns green and the status track moves to Being prepared on its own.

Print the order slipPrint with this browserStart another listDone — finish session
Session reset “Start over” in the top bar, “Done — finish session”, and the idle timeout all clear the same things: the task, the search, the open item and the whole list. Nothing carries over to the next customer.

04The staff prep queue

Opened from “Staff prep queue” at the bottom right. In production this is the screen that lives at the Order Prep counter, not inside the customer kiosk.

Each request is one card: the request number, how many items and pieces it holds, the amount, a status pill, and then every line with quantity, product name and the exact pull location so a staff member can walk the list in aisle order.

The rule the screen enforces An order slip sits in Awaiting payment with a “do not pull” marker until the cashier confirms it. Confirming payment is a cashier action; picking is a floor-staff action. Keeping them apart is what stops an unpaid order from being prepared.
StatusMeaningWho moves it
Awaiting paymentSlip issued, stock held, nothing pulled. Shows the hold countdown.Set automatically when the customer confirms the list
PreparingPayment confirmed, released to the floor for pickingCashier, with Confirm payment
ReadyComplete and waiting at the counterStaff, when the last line is picked
Expired · stock releasedNot paid within the hold window; the items went back to availableAutomatic after 15 minutes, or staff with Cancel slip

Confirming payment does two things at once: it releases the order for picking, and it turns the soft hold into a real stock deduction — so the shelf count and what customers see as available stay honest.

Prototype behaviour Confirm payment and Cancel slip are real buttons on the staff view so the gate can be demonstrated. Preparation then completes on a 15-second timer. In production the cashier's POS confirms the payment and the floor staff mark the order ready.

05The customer display

A second screen, mounted above the Order Prep counter, doing what the queue board does at a bank or a fast-food counter: it shows every live order number and which of three states it is in, so nobody has to hover at the counter asking whether their order is ready.

ColumnWhat it means to the customerColour
Waiting for paymentThe slip exists but is not paid. Nothing is being pulled — go to a checkout lane.Amber
Now preparingPayment confirmed. Staff are walking the aisles for this order.White
Ready for pick-upComplete and waiting at the counter. Claim it with the receipt.Green, and the number pulses when it first appears

Each entry shows the last four digits at wall-reading size, the full request number underneath, and how many items and pieces the order holds. Six numbers fit per column; the rest are counted as “+N more”. A ready number drops off the board 90 seconds after it appears. The footer rotates through the four things customers most often need to be told, so staff do not have to repeat them.

Where the numbers come from The display reads the same queue the kiosk writes. Open the kiosk and the display in two tabs on the same machine, send a list, and the number appears in Waiting for payment straight away; confirm payment in the staff view and watch it cross to Now preparing. With no kiosk data present, the board runs a sample queue on its own so a wall screen is never blank — the indicator in the top right says which of the two it is showing.
In production The display should subscribe to the store system rather than to a browser's local storage, so one board can serve several kiosks and tills. It is a read-only screen: it must never be able to change an order.

06Hardware specification

Recommended build for one kiosk unit. Nothing here is exotic; the whole thing runs in a browser.

PartSpecificationNotes
Touchscreen 21.5"–27", projected-capacitive, 10-point touch, 1080 × 1920 portrait or 1920 × 1080 landscape, ≥ 250 nits The layout adapts to either orientation. Portrait fits more result cards; landscape fits the floor plan better.
Display screen 32"–43" commercial panel above the Order Prep counter, landscape, 1920 × 1080, ≥ 350 nits Runs the same page in a browser. No touch needed — it is read-only.
Computer x86 mini-PC or Android box · 4 GB RAM · 32 GB storage The page is a single HTML file; any device that runs a modern browser is enough.
Barcode scanner 1D/2D USB scanner in HID keyboard-wedge mode, mounted below the screen A wedge scanner types into the search field on the search screen. See §7 for the production wiring.
Slip printer 80 mm thermal receipt printer, ESC/POS, auto-cutter, front-facing tray Load a paper-low sensor if available — the slip is the customer's only physical proof of the request.
Network Wired LAN preferred, 100 Mbps · Wi-Fi as fallback Only the inventory calls need the network; the interface itself is local.
Mounting Floor stand or wall bracket · screen centre 1,200–1,350 mm from the floor · 10–15° tilt Keeps the whole screen inside reach for standing adults and seated wheelchair users.
Power Single 220 V outlet, surge protected · UPS optional A UPS only protects the display; requests already sent live on the store's system.
Placement Near the entrance, in line of sight of the Order Prep counter Customers should be able to see where the slip tells them to go.

07Software requirements

ItemRequirement
BrowserChrome, Edge or Firefox, last two major versions. Uses ResizeObserver, CSS grid, custom properties and dvh units.
Kiosk modeChrome: --kiosk --incognito --noerrdialogs --disable-pinch --overscroll-history-navigation=0
Filesindex.html (the kiosk), display.html (the queue board), docs.html (this guide) and .htaccess. No build step, no framework, no database.
URLsThe bundled .htaccess serves clean addresses — / for the kiosk, /display for the queue board and /docs for this guide. Requests that still carry .html or .php are 301-redirected to the clean form, and an unknown address falls back to the kiosk instead of an Apache error page.
ServerApache with mod_rewrite and AllowOverride All. On nginx, replace the rewrite block with try_files $uri $uri.html $uri/ /index.html;.
External resourcesGoogle Fonts (Archivo, IBM Plex Sans, IBM Plex Mono) and qrcodejs 1.0.0 from cdnjs. Both should be self-hosted before go-live so the kiosk survives an internet outage.
Product imagesDrawn as inline SVG. No image server, no downloads, nothing to load — every item renders instantly and stays sharp at any screen size.
Storage usedlocalStorage, one key: cruzhw.kiosk.theme. No customer data is written anywhere.
OfflineOnce fonts and the QR library are self-hosted the interface runs fully offline; only live stock needs the network.

08Inventory integration

The prototype carries its catalogue inside the page. Going live means replacing that array with calls to the store system — four of them.

Inventory system Price · on hand · aisle, bay, shelf Kiosk 02 Single page in a browser No database of its own Order prep queue Counter screen Staff set the status Ready-number display Beside Checkout 3 Checkout lanes · POS Payment happens here GET search · item · stock POST order slip — items + qty status: awaiting payment → ready publishes ready numbers customer + printed slip payment confirmed · stock deducted releases the order for picking
The kiosk's only write is the order slip; everything else it does is a read, so a kiosk failure can never corrupt stock or lose a sale. The second green arrow is the gate: the prep queue does not release an order for picking until the checkout has confirmed payment.

Endpoints the kiosk needs

CallPurposeReturns
GET /products?q=Search as the customer typesArray of item summaries — SKU, name, brand, category, price, unit, stock, location
GET /products/{sku}Item details screenFull record including description, specifications, barcode
POST /requestsIssue the order slip and hold the stockRequest number, creation time, hold expiry
GET /requests/{no}Live status on the confirmation screenawaiting_payment · preparing · ready · expired
POST /requests/{no}/paymentCalled by the POS, not the kiosk — confirms payment, deducts stock and releases the order for pickingReceipt number and the released status

Product record

FieldTypeUsed for
skustringIdentity, shown on every screen and on the slip
barcodestringScanner lookup — use EAN-13 or UPC in production
namestringSearch and display. Include the size in the name — customers search “1/2 pvc”
brandstringSearch and display
categoryenumCategory chips, and the aisle a category maps to
pricenumberShelf price, VAT inclusive
unitstringpc, length, bag, roll, sheet, gallon, kilo, set, pair, box, unit
stocknumberOn the shelf
heldnumberCommitted to unpaid order slips. The kiosk shows and checks against stock − held, never the raw count
location[zone, bay, shelf]Signage tiles, walking directions, floor-plan highlight, staff pull list
descriptionstringOne paragraph in the customer's language, not the supplier's
specs[label, value][]Product details tab
The one rule the backend must own The hold and the payment gate belong to the store system, not to the kiosk. Two kiosks, a phone order and a walk-in customer all have to see the same stock − held figure, and only the POS may flip a request to paid. The kiosk must never be able to release an order by itself.
Barcode wiring A keyboard-wedge scanner already types into the search field while the search screen is open. For production, capture the keystrokes globally, treat the trailing Enter as “look this up”, and open the matched item directly — so a scan works from any screen, not only from search.

09Behaviour settings

The values the kiosk currently runs on. All of them live at the top of the script and are safe to change.

SettingValueEffect
Idle timeout90 s“Are you still there?” appears after no touch
Idle countdown15 sThen the session clears and returns to the welcome screen
Low-stock threshold≤ 10Item shows the amber “Low stock” pill
Out-of-stock threshold0Item cannot be added to a list
Promo rotation5.2 sWelcome screen panel change
Results per pagemeasuredHowever many whole cards fit the space — recalculated when the keyboard opens or the window changes
Search field limit34 charsLength of a typed query
Request numberRQ-DDMM-NNNNDay, month, then a running counter
QR contentsCRUZHW|no|items|pcs|UNPAIDScanned by the cashier to pull up the order slip
Stock hold15 minHow long an unpaid order slip reserves its items before they are released back to available
Preparation time15 sPrototype only — how long after payment the status turns Ready

10Touch & accessibility

Touch sizing

  • Buttons: 48 px minimum, 64 px for primary actions
  • Keyboard keys: 54 px, reducing to 40 px only on short screens
  • Quantity steppers: 72 px on the item screen, 52 px in the list
  • Category chips and page numbers: 44–52 px

Readability

  • Body text 16 px, product names 15.5 px, prices 20–38 px
  • Bright and dark palettes both meet contrast on their own ground
  • Stock state is a colour and a word — never colour alone
  • prefers-reduced-motion disables every animation
  • Keyboard focus is always visible for staff testing with a keyboard
Reach With the screen centre at 1,200–1,350 mm, all primary actions sit inside the 380–1,220 mm reach band used for accessible controls. Keep the “Send list to staff” button in the lower half of the screen when the layout is re-tuned for a portrait panel.

11Running the prototype

There is nothing to install.

  • Put the folder on any Apache host. The kiosk answers at / and this guide at /docs — no file extensions in the address bar.
  • Opening index.html straight off the disk also works for a quick look; only the links between the two pages need the server.
  • To run it as a kiosk, launch the browser in kiosk mode pointing at that address.
  • To demonstrate the staff side, send a list, then open Staff prep queue at the bottom right and press Confirm payment (cashier) — the customer screen turns green by itself.
  • For the full picture, open /display on a second screen or a second tab and run the kiosk beside it: the number appears under Waiting for payment, then crosses the board as the cashier confirms it.
  • To demonstrate the scanner without hardware, use Scan barcode — it reads a random in-stock item after a moment and opens it.
  • To demonstrate printing, use Print the slip; Print with this browser sends the same slip to a real printer or to PDF, with everything except the slip stripped out.

12Limits & go-live checklist

What is deliberately faked in this build, and what has to be true before it faces customers.

AreaIn the prototypeBefore go-live
Catalogue33 sample item lines inside the pageLive search against the inventory system
StockFixed numbersRead at the moment the item is opened, and re-checked when the list is sent
RequestsHeld in memory; lost on reloadPosted to the store system, visible at the counter
Payment gateA Confirm payment button on the staff view stands in for the cashierThe POS confirms payment; the kiosk can never mark an order paid
Stock holdsHeld in the page and released after 15 minutesHeld in the store system so every till, kiosk and phone order sees the same availability
StatusesPreparation completes on a timer once paidSet by staff at the prep counter
Queue displayReads the browser's local storage, or runs a sample queue when it finds noneSubscribes to the store system so one board can serve every kiosk and till
ScannerSimulated, returns a random itemReal scanner input captured on every screen
PrinterOn-screen animation, plus browser printingThermal printer, ESC/POS, auto-cut
Fonts & QR libraryLoaded from the internetSelf-hosted with the page
Store identityCruz Hardware, Marikina — placeholderReal branch name, hours, counter names and aisle map
PricesIllustrativePulled from the price file, VAT rules confirmed with accounting
Read this before demoing to management Every price, stock figure and product in this build is sample data for showing the flow. It is not the branch's real catalogue, and the totals are not quotations.

13Sample data reference

The zones and categories the prototype ships with. The aisle numbering is what the floor plan, the signage tiles and the staff pull list all speak.

ZoneContentsStructure
YARD 1Cement, steel & aggregatesPallets and racks, ground level
YARD 2Lumber, plywood & boardsRacks A–C, ground level
A1Seasonal & promoBays A–D · shelves 1–4
A2Plumbing & pipes
A3Pumps & water systems
A4Electrical supplies
A5Fasteners & adhesives
A6Hand tools
A7Power tools
A8Paint & sundries
A9Locks & builders hardware
A10Garden & outdoor

Counters on the same floor plan: Order Prep (where prepared lists are claimed), Checkout 1–4 (payment), and the kiosk itself, marked “You are here”.