Skip to content

Device Profiles

Overview

Device Profiles are configuration templates that can be applied to multiple devices (kiosks, KDS). Instead of configuring each device individually, create profiles and assign them.

Key Purpose: Create reusable configuration templates for devices.

Purpose

This page lets you create reusable configuration profiles for kiosk devices that control dining options, menus, idle behavior, scheduling, and screensaver settings.

Key Concepts

  • Device Profile: A named configuration template assigned to one or more kiosk devices, defining their dining options, menu, idle timeout, schedule, and screensaver
  • Kiosk Only: Device profiles are currently kiosk-only — the backend hardcodes the type to "kiosk." KDS profiles do not exist yet
  • Dining Options: Each profile must configure exactly two dining options (e.g., Dine In + Takeout) that cannot be the same value
  • Idle Timeout: Controls inactivity reset — "Standard" uses fixed 45-second timeout with 15-second warning; "Custom" allows user-defined values (minimum 1 second each)
  • Device Schedule: Controls when the kiosk is active — "Default" uses location business hours, "Custom" allows per-day time ranges, "Deactivated" turns off scheduling
  • ReloadMenu Event: Saving a profile fires a ReloadMenu event that syncs changes to all assigned kiosk devices

Actions

Create Device Profile

Navigate to Devices → Profiles, click "Add Profile." Enter a name (must be unique), select two dining options, configure default and optional extra menus, set idle timeout, optionally enable screensaver, and set a device schedule. Requires CREATE_DEVICE_PROFILE permission.

Edit Device Profile

Open an existing profile to modify settings. All assigned devices will reload their configuration when saved. Requires EDIT_DEVICE_PROFILE permission.

Delete Device Profile

Remove a profile. This fails if any devices are still assigned to it — all devices must be unassigned first. Requires DELETE_DEVICE_PROFILE permission.

Configure Menus

Set a default menu (must be eligible for kiosk visibility) and optionally add extra menus with scheduled availability. Extra menus cannot duplicate the default or each other, and their schedules cannot overlap.

Enable Screensaver

Toggle idle screensaver on, set the number of minutes of inactivity before it appears, and upload a screensaver image. The screensaver displays before the idle timeout resets the session.

Business Rules

  • Profile names must be unique across all device profiles in the tenant
  • Dining option 1 and dining option 2 cannot be the same value (validated via is_dining_option_valid rule)
  • Extra menus cannot duplicate the default menu or each other, and their schedules cannot overlap
  • Idle timeout "Standard" mode uses fixed values: 45-second timeout, 15-second warning. "Custom" mode requires both values to be at least 1 second
  • Profile deletion is blocked with "Profile is still used by devices" error if getDeviceCount() > 0 — all devices must be unassigned first

Location

  • Backoffice Route: /devices/profiles
  • Backend Controller: app/Http/Controllers/Api/DeviceProfileController.php
  • Vue Component: src/views/devices/profiles/index.vue

Fields

Profile Name

PropertyValue
Field IDname
LabelProfile Name
TypeText
RequiredYes

Description: Name for this configuration profile.

Examples:

  • "Standard Kiosk"
  • "Fast Food Kiosk"
  • "Kitchen Display"

Profile Type

PropertyValue
Field IDtype
LabelDevice Type
TypeSelect
Optionskiosk, kds
RequiredYes

Description: What type of device this profile is for.


Kiosk Profile Settings

Theme

PropertyValue
Field IDtheme
LabelTheme
TypeSelect
Optionslight, dark
Defaultlight

Languages

PropertyValue
Field IDlanguages
LabelAvailable Languages
TypeMulti-select

Idle Timeout

PropertyValue
Field IDidle_timeout
LabelIdle Timeout
TypeNumber
UnitSeconds
Default120

Show Images

PropertyValue
Field IDshow_images
LabelShow Product Images
TypeToggle
Defaulttrue

Upsell Enabled

PropertyValue
Field IDupsell_enabled
LabelShow Upsells
TypeToggle
Defaulttrue

Tips Enabled

PropertyValue
Field IDtips_enabled
LabelCollect Tips
TypeToggle
Defaultfalse

Tip Percentages

PropertyValue
Field IDtip_percentages
LabelTip Options
TypeArray
Default[10, 15, 20]

KDS Profile Settings

Display Mode

PropertyValue
Field IDdisplay_mode
LabelDisplay Mode
TypeSelect
Optionstickets, list, grid
Defaulttickets

Sound Alerts

PropertyValue
Field IDsound_enabled
LabelSound Alerts
TypeToggle
Defaulttrue

Color Coding

PropertyValue
Field IDcolor_coding
LabelTime-Based Colors
TypeToggle
Defaulttrue

Time Thresholds

PropertyValue
Field IDtime_thresholds
LabelColor Thresholds
TypeObject
Default

Business Logic

Profile Assignment

Create profile with settings
        |
        v
Assign profile to devices
        |
        v
Devices inherit profile settings
        |
        v
Change profile = all devices update

Override Behavior

Device settings:
1. Device-specific override (highest priority)
2. Profile setting
3. Default value (lowest priority)

Relations

Depends On

  • Kiosk: Kiosk profiles
  • KDS: KDS profiles

Affects

  • All devices using the profile

Examples

Standard Kiosk Profile

json
{
  "name": "Standard Kiosk",
  "type": "kiosk",
  "settings": {
    "theme": "light",
    "languages": ["en", "nl"],
    "idle_timeout": 120,
    "show_images": true,
    "upsell_enabled": true,
    "tips_enabled": true,
    "tip_percentages": [10, 15, 20]
  }
}

Fast Food Kiosk Profile

json
{
  "name": "Fast Food Kiosk",
  "type": "kiosk",
  "settings": {
    "theme": "dark",
    "languages": ["en", "nl", "de"],
    "idle_timeout": 90,
    "show_images": true,
    "upsell_enabled": true,
    "tips_enabled": false
  }
}

Kitchen KDS Profile

json
{
  "name": "Kitchen Display",
  "type": "kds",
  "settings": {
    "display_mode": "tickets",
    "sound_enabled": true,
    "color_coding": true,
    "time_thresholds": {
      "yellow": 5,
      "red": 10
    }
  }
}

Expo KDS Profile

json
{
  "name": "Expo Station",
  "type": "kds",
  "settings": {
    "display_mode": "list",
    "sound_enabled": true,
    "color_coding": true,
    "time_thresholds": {
      "yellow": 3,
      "red": 7
    }
  }
}

FAQs

  • "Can I create a KDS profile?" Not currently. The device type is hardcoded to "kiosk" in the backend service. KDS settings are configured separately on the device itself.
  • "What happens when I change a profile that has assigned devices?" A ReloadMenu event fires, causing all devices using that profile to reload their configuration and menu data automatically.
  • "What is the screensaver feature?" When enabled, a custom image displays on the kiosk after a configurable number of minutes of inactivity, before the idle timeout resets the entire session.
  • "Can I set different menus for different times of day?" Yes. Add extra menus with scheduled availability windows. Each extra menu can have per-day time ranges. Schedules cannot overlap with each other.
  • "What are the schedule types?" "Default" uses the location's business hours, "Custom" allows per-day time ranges specific to this profile, and "Deactivated" turns off scheduling entirely.

Troubleshooting

  • Cannot delete profile → The profile is still assigned to one or more devices. Go to Devices, find devices using this profile, and assign them a different profile first.
  • Menu not appearing on kiosk → Verify the default menu is marked as eligible for kiosk visibility. Extra menus must also be kiosk-eligible.
  • Idle timeout not working as expected → Check whether the profile uses "Standard" (45s) or "Custom" values. The standard kiosk timeout is 45 seconds, not the 120 seconds used for online ordering.
  • Schedule not activating → Ensure the schedule type is set to "Custom" with valid time ranges, or "Default" with location business hours properly configured.