Skip to main content

Restaurant Self-Ordering System - CMS & Admin Setup

Overview

This document highlights the features, fields, validation rules, business logic, and edge cases for the Setup Page and CMS Admin Panel, covering both desktop and mobile versions. It is based on the application's existing data models, allergen requirements, tax rules, and operational processes.

Guests scan a QR code on their table, browse the menu on their phone, add items and add-ons to a cart, and place the order. The kitchen receives the order by station. Guests install nothing. The Setup Page supports three admin levels across Desktop, Mobile, and Tablet devices for management, floor, and kitchen operations.

System Architecture & Role-Based Access Control

The Setup Page supports three admin levels across Desktop, Mobile, and Tablet devices for management, floor, and kitchen operations.

cms_admin_setup_roles.png

Access Permission Matrix
Module / ActionRestaurant ManagementFloor StaffKitchen Staff
Add / Edit / Delete Menu ItemsFull AccessView OnlyView Only
Change Base Prices & Tax RatesFull AccessDeniedDenied
Toggle Real-time Item Availability (Sold Out)Full AccessFull AccessFull Access
Table & QR Code Generation & Seating SetupFull AccessView / ReassignDenied
Staff Call Routing & Notification ConfigFull AccessView OnlyDenied
Kitchen Station Routing & Prep Time WindowsFull AccessDeniedEdit Prep Time
Order Cancellation / Void OverrideFull AccessManager PIN / Authorization RequiredDenied


1. Category Setup

This module is used to create and manage menu categories, menu items, dish details, nutrition information, and item options.

The Category Management section consists of the following pages:

1.1 Category List Page

The Category List Page displays all configured menu categories.

  • View all categories in a list.
  • View category details such as name-Ja, name-En, Image, Display Order, and Status.
  • Edit existing categories.
  • Create a new category.

1.2 Category Ordering Page

The Category Ordering Page is used to control the display sequence of categories in the customer-facing CategoryNav.

  • Display all active categories.
  • Drag and drop categories to change their order.
  • Manually adjust the category order.
  • Sort categories using available Sort options.
  • The updated order is reflected in the customer-facing CategoryNav.

1.3 Category Configuration Form 

The Category Configuration Form is used to create or edit category information.

Field NameData TypeRequiredDefaultValidation & Input Constraints
idString (Slug)Yes-

2–30 chars; lowercase alphanumeric + hyphens (/^[a-z0-9-]+$/).

Must be unique. 

name-JaStringYes-1–30 chars Japanese text (Kanji/Kana).
name-EnStringYes-1–50 chars English text. 
imageURL / FileNoDefault placeholder

Valid HTTPS image URL or uploaded JPEG/WebP

(min 300×300px, max 2MB).

displayOrderIntegerYesNext sequence

Positive integer ≥ 1.

Controls horizontal scroll sequence in CategoryNav.

isActiveBooleanYestrueWhen isInactive, hides category and all child items from customer view.

Business Rule: A category cannot be deactivated while it contains active published items.


2. Menu & Content Setup

This module is used to create, manage, customize, and display menu items for the ordering system.

2.2 Menu Item List

The Menu Item List displays all configured menu items and provides search, filtering, sorting, editing, and copying functions.

2.2.1 List Page Features
FeatureDescription
SearchSearch menu items by item code, name, category, or menu group.
Category FilterFilter items by configured category.
Outlet FilterFilter items by outlet.
Menu Group FilterFilter by menu group such as Starters, Main Course, or Beverages.
Kitchen FilterFilter items by assigned kitchen/preparation station.
Availability FilterFilter by Available or Sold Out.
Status FilterFilter by Active/Inactive items if applicable.
SortSort by Name, Item Code, Category, Price, Preparation Time, or Availability.
EditOpen the selected menu item for editing.
CopyCreate a new menu item using an existing item's configuration as the starting point.
2.2.2 Menu List
ColumnDescription
ImageMenu item image
Item CodeInternal POS/SKU code
Name (English/ Japanese)Menu item name
CategoryAssigned category
Menu GroupReporting/kitchen grouping
PriceSelling price
KitchenPreparation station
Prep TimePreparation time in minutes
AvailabilityAvailable / Sold Out
ActionEdit / Copy

2.2 Menu Item Setup

Creating or editing a menu item uses a step-based setup.

2.2.1 Step 1 — Basic Information

Basic information, pricing, availability, routing, and display information are configured here.

Field NameData TypeRequiredDefaultValidation & Input Constraints
outletEnum (DLL)Yes-Dropdown list of configured outlets. Determines which outlet this item belongs to.
id (auto)String Yes-Unique identifier. 
categoryIdStringYes-Must reference an existing active Category.id.
menuGroupEnum (DLL)Yes-

Groups items for reporting and kitchen routing

(e.g., Starters, Beverages, Main Course).

costPercentageDecimal (%Yes-

Cost of goods as a percentage of the selling price.

Range 0–100. Used for margin reporting.

discountAllowedBoolean (Yes/No)YesYes

-

ncAllowedBoolean (Yes/No)Yes-

"No Charge" allowed. If Yes, authorized staff can mark this
item as complimentary / no-charge on an order.

kitchenEnum (Dropdown)Yes-

Kitchen / preparation station this item routes to

(e.g., Main Kitchen, Bar, Dessert Station).

itemCodeStringYes-

Internal SKU / POS code for the item. Alphanumeric, must be unique.

name-JaStringYes-1–60 chars Japanese text. 
name-EnStringYes-1–80 chars English text. 
description-JaTextYes-

10–300 chars.

description-EnTextYes-

10–400 chars.

priceInteger (JPY)Yes-

Integer ≥ 0 and ≤ 1,000,000.

Japanese consumption tax compliance requires entering the tax-inclusive gross amount.


Japanese yen does not utilize decimals or fractional coins for everyday purchases, a transaction of this amount would physically round to 110 Yen.

taxRateCategoryEnumYesstandard_10

Options:

standard_10 (Dine-in standard)

reduced_8 (Takeaway food/drink)

imageURL / FileYes-

Valid HTTPS URL or WebP/JPG upload.

16:9 or 4:3 ratio recommended.

Min 800×600px.

badgesArray<Enum>No-Multi-select: seasonal, set , spicy.
spiceLevelIntegerConditional0

Required if spicy badge selected:

integer 1 (Mild) to 3 (Extra Hot).

prepTimeMinutesIntegerYes8

Positive integer 1 to 120.

Displayed on food cards.

calorieIntegerNonull

Integer 0 to 5000 (kcal).

origin-JaStringNonullMax 60 chars.
origin-EnStringNonullMax 80 chars.
isSchedulableBooleanYesfalseIf true, item can be pre-ordered for specific dining time slots in CartModal.
isAvailableBooleanYestrue

Real-time availability flag.

When false, displays "Sold Out" overlay and disables "+" button.

2.2.2 Step 2 — Portion Specs, Nutrition & Options (Add-Ons)

Step 2 contains the additional menu item information displayed on the food detail page and allows staff to configure customer customization options and add-ons.

A. Portion Specs & Ingredients

Field NameSub-FieldData TypeRequiredValidation Rule
specs.weightSize—StringNoMax 30 chars. Examples: 600g, 250ml, 5 skewers, 2 pieces.
specs.ingredients-Ja—TextYesComma-separated Japanese ingredients. Max 500 chars.
specs.ingredients-En—TextYesComma-separated English ingredients. Max 600 chars.
B. Nutrition Information
Field NameSub-FieldData TypeRequiredValidation Rule
specs.nutritionenergyStringNoFormat: ^\d+(\.\d+)?\s*kcal$z
specs.nutritionproteinStringNoFormat: ^\d+(\.\d+)?\s*g$
specs.nutritionfatStringNoFormat: ^\d+(\.\d+)?\s*g$
specs.nutritionsaltStringNoFormat: ^\d+(\.\d+)?\s*g$

Warning: Nutrition data older than 12 months should be flagged for review.

B. Customization Options (Add-Ons)

A menu item can have multiple Option Groups. Each group contains one or more Option Items.

Examples:

  • Rice Portion
  • Cooking Style
  • Sauce
  • Add-ons

image.png

Option Group Configuration

Field NameData TypeRequiredValidation Rule
idStringYesUnique identifier. Example: opt-rice.
titleJaStringYesJapanese option group name.
titleEnStringYesEnglish option group name.
descriptionJaTextNo10–400 chars.
descriptionEnTextNo10–250 chars.
selectionTypeEnumYessingle_select (Radio) or multi_select (Checkbox).
requiredBooleanYesIf Yes, customer must make the required selection before adding to cart.
minSelectIntegerYesMinimum number of selections. 0 if optional 1 if required single-select.
maxSelectIntegerYes1 for single-select ≥1 or null for multi-select/unlimited.

Option Choices & Rates

Field NameData TypeRequiredValidation Rule
idStringYesUnique identifier. Example: rice-large.
choicenameJpStringYesJapanese option name.
choicenameEnStringYesEnglish option name.
extraPriceInteger (JPY)Yes

Amount added to or subtracted from the base price.

Examples: +100, 0, -50.

isDefaultBooleanYesAutomatically selected when the Food Detail page opens.

Default Selection Rule:
For a single_select group marked as Required, exactly one Option Item must be configured as the default.

Example

Rice Portion — Single Select — Required

OptionPriceDefault
Regular¥0✓
Large (+100g)+¥100
Small (-50g)-¥50

Add-ons — Multi Select — Optional

OptionPrice
Extra Egg+¥100
Extra Sauce+¥50
Green Onion+¥30

Portion Specs & Ingredients → Nutrition Information → Customization Options (Add-Ons).


2.2.3 Step 3 — Allergens & Dietary Tags
Step 3 — Allergens & Dietary Tags
│
├── A. Allergen Information
│   ├── Allergen
│   └── Status
│       ├── Contains
│       ├── Free
│       └── Shared Equipment
│
├── B. Dietary Tags
│   ├── Vegetarian
│   ├── Vegan
│   ├── Gluten Free
│   └── Halal

Step 3 allows staff to configure allergen information and dietary tags for each menu item.

A. Allergen Information

Staff can define the allergen status of each applicable allergen for the menu item. Each allergen can have one of three statuses:

StatusDescription
ContainsThe allergen is intentionally present in the menu item.
FreeThe allergen is not present in the menu item.
Shared EquipmentThe allergen is not intentionally included, but the menu item may have been prepared using equipment that also handles the allergen.

Mandatory Allergens

Based on Japan's Food Labeling Act and Consumer Affairs Agency guidelines, the CMS must support the following 8 mandatory allergens:

  1. Wheat
  2. Egg
  3. Milk
  4. Shrimp
  5. Crab
  6. Buckwheat
  7. Peanut
  8. Walnut

Shared Equipment Example

Peanut — Shared Equipment
The dish does not contain peanuts, but it is prepared using equipment that also processes peanuts.

Allergen Configuration

Field NameData TypeRequiredValidation & Input Constraints
id (auto)StringYesAuto-generated. 2–30 characters; lowercase letters, numbers, and hyphens only. Must be unique.
name-JaStringYes1–30 Japanese characters.
name-EnStringYes1–30 English characters.
description-JaTextYes10–250 characters.
description-EnTextYes10–400 characters.
imageSVG UploadYes-
isActiveBoolean (Yes/No)YesDefault: Yes. Determines whether the allergen is available for selection and display.

B. Dietary Tags

Dietary tags allow staff to identify whether a menu item meets specific dietary requirements. The CMS must validate the selected dietary tags against the configured allergen and ingredient information.

TagValidation Rule
VegetarianThe menu item must comply with the defined vegetarian requirements.
VeganThe menu item must satisfy Vegetarian requirements. Egg and Milk must be Free.
Gluten FreeWheat and Buckwheat must be Free.
HalalThe menu item must not contain pork or alcohol.

Dietary Tag Configuration

Field NameData TypeRequiredValidation & Input Constraints
id (auto)StringYesAuto-generated. 2–30 characters; lowercase letters, numbers, and hyphens only. Must be unique.
name-JaStringYes1–30 Japanese characters.
name-EnStringYes1–30 English characters.
description-JaTextYes10–250 characters.
description-EnTextYes10–400 characters.
imageSVG UploadYesOnly .svg files are allowed.
isActiveBoolean (Yes/No)Yes

Default: Yes.

Determines whether the dietary tag is available for selection and display.


3. Combo Menu Setup

The Combo is an Ordering App concept only. It exists purely to help the guest select several related items together at a bundled price. 

3.1 Combo List Page

The Combo List Page displays all combos configured for the outlet.

FieldDescription
Combo IDUnique identifier of the combo
Combo Name-JaCombo name in Japanese
Combo Name-EnCombo name in English
Combo Description-JaCombo description in Japanese
Combo Description-EnCombo description in English
AvailabilityEffective date/time and applicable days
StatusActive / Inactive
ActionsView/Edit

3.2  CMS Setup - Combo 

Field Name

Data Type

Required

Validation & Input Constraints

idString (slug)

Yes

Unique per outlet

Combo name-JaString

Yes

1–30 chars Japanese text.

Combo name-EnString

Yes

1–30 chars English text.

effectiveFromDate

No

Date from which the combo is available

effectiveToDate

No

Date until which the combo is available

startTimeTime

No

Daily start time

endTimeTime

No

Daily end time

applicableDaysArray ( checkbox )

Yes

Already defined 22 Sep 2026 — combo availability window.
isActiveBoolean

Yes

Whether the combo is available for sale
3.3 Combo Sub-Groups & Selectable Items

image.png

3.3.1 Combo Sub-Groups

Field NameData TypeRequiredDescription
idString / AutoYesUnique sub-group ID
title-JaStringYesGroup name in Japanese
title-EnStringYesGroup name in English
decriptionTextYes-
selectionTypeEnumYesSingle Select / Multi Select
minSelectIntegerYesMinimum number of items guest must select
maxSelectIntegerYesMaximum number of items guest can select
requiredBooleanYesWhether selection is mandatory

3.3.2 Selectable Items

Each Sub-Group contains the menu items that the guest can select.

Field NameData TypeRequiredDescription
itemIdReferenceYesExisting Menu Item selected from Menu Setup
itemNameReference / Read-only-Automatically displayed from Menu Setup
standalonePriceInteger (JPY) / Read-only-Automatically displayed from Menu Setup
comboPriceInteger (JPY)YesPrice charged when the item is selected in this combo
isDefaultBooleanNoSets the item as the default selection

The Combo Setup page allows staff to manage the configured Sub-Groups and their selectable items.

Sub-Group Actions For each Sub-Group, staff can:

  • Add Sub-Group
  • Edit Sub-Group
  • Delete Sub-Group
  • Reorder Sub-Groups, if ordering is supported

Deleting a Sub-Group also removes the selectable-item configuration belonging to that Sub-Group.

Selectable Item Actions For each Sub-Group, staff can:

  • Add Item
  • Edit Item
  • Delete Item
  • Set as Default

Only the selected item configuration is removed when an item is deleted. The original Menu Setup item is not deleted.

3.4 Combo Strcuture

So the important relationship is:

image.png

The ¥120 remains the normal standalone price. The combo configuration only tells the system that when Jhol Momo is selected inside Combo 1, its price is ¥70.

image.png

Ordering app behaviour (guest-facing):

  1. The guest opens a combo (e.g. Combo 1) and sees its groups, such as "Chicken momo" and "Soft drink".
  2. Each group asks the guest to choose 1 item. The options are Jhol, Fry, or Steam momo, and Coca-Cola, Fanta, or Mountain Dew.
  3. Each option shows its combo price (¥70 for momo, ¥80 for drinks), not its standalone price.
  4. The guest can't continue until every required group has a selection.
  5. The running total updates as the guest picks (for example ¥70 + ¥80 = ¥150).
  6. Tapping "Add to order" adds the combo to the cart as one grouped line.
  7. The cart shows the chosen items under the combo, with the combo price charged for each.
  8. If the same item is ordered outside the combo, it's charged its standalone price (Jhol Momo ¥120, Mountain Dew ¥70).
  9. The guest can edit or remove the combo from the cart before placing the order.
  10. On placing the order, the guest sees the final total and a confirmation.

Example used throughout this section:

Combo 1 is built from two selectable groups. The guest picks one item from each group: 

Combo Sub-Group

Selectable Items

(standalone price)

Combo Price

(when chosen inside Combo 1)

Chicken Momo (pick 1)
  • Jhol Momo           - ¥120
  • Fry Momo             - ¥140
  • Steam Momo        - ¥130
  • Jhol Momo selected → ¥70
Soft Drink (pick 1)
  • Coca-Cola
  • Fanta
  • Mountain Dew
  • Mountain Dew selected → ¥80

Result: guest pays ¥150 for Combo 1 (¥70 + ¥80), instead of the standalone total the two items would otherwise cost.


4. Table & QR Security

The Table & Seating Setup is used to configure restaurant table information, seating capacity, floor location, and the security settings required for customers to access the table ordering session.

4.1 Table & Seating Geometry

This section defines the basic information and physical seating configuration of each restaurant table.

Field NameData TypeRequiredValidation & Input ConstraintsDescription
Table IdentifierStringYesMust be unique within the restaurant.Unique identifier used to identify the table.
Floor ZoneString / DropdownYesMust be selected from the configured floor zones.Defines the floor or seating area where the table is located.
Seating CapacityIntegerYesMust be a positive whole number.Defines the maximum number of seats available at the table.
Restaurant NameStringYesMust be a valid configured restaurant name.Identifies the restaurant associated with the table.
Store Wi-Fi SSIDStringNoMaximum length based on system configuration.Stores the restaurant's Wi-Fi network name associated with the table location.

4.1 Table QR Code & PIN Security

This section is used to generate and manage the QR code and security PIN that customers use to access the table ordering session.

Field NameData TypeRequiredValidation & Input ConstraintsDescription
Table Session Security PIN4-Digit PINYesMust contain exactly 4 numeric digits.Requires the guest to enter the configured PIN before accessing the table session. This helps prevent unauthorized off-site ordering.
QR CodeSVG / ImageAuto-generatedGenerated from the Customer POS Direct URL.QR code that customers scan to access the table ordering session.
Print Tabletop QR StandAction--Generates a printable tabletop QR stand containing the table QR code and required table information.

Format Engine
Generates high-density vector SVG, PNG and other format files. Batch PDF Print Layout: Includes restaurant logo, assigned Table Number in bold typography, QR code, and a bilingual call-to-action (JP / EN: "Scan QR with your camera to view menu & order").

Session Security & Tamper Prevention:

ScenarioSystem Behavior
First customer scans the QRThe first customer who scans the table QR is shown a unique 4–5 digit session code.
Another customer at the same table scans the QRThey can access the table menu, but they will not see the session code. They must obtain the code from the customer who started the session.
Someone scans a QR from outside the restaurantIf they have a photo or copy of the static QR, they can open the menu but cannot place an order without the active session code.
Customer wants to browse onlyThe customer can select “View Menu” / “Continue without Code” to browse the menu. This provides view-only access and does not allow ordering.
Session code changesA new 4–5 digit code is generated for each table session.
Session endsRestaurant staff ends/resets the session after payment or when the customer leaves. The previous code becomes invalid.
New customer uses the tableA new session is created with a new code, preventing the previous session from being reused.
4.1.2 Guest Count & Session Headcount Rules

Where the guest sees it

When a customer scans the table QR code and enters the session, the Guest Count is visible this is also shown on the More page. The customer can set the number of guests who will participate in the session.

How the count is set

  • The customer can enter the Guest Count when joining the table session, for example, 4 guests.

  • The Guest Count is for staff information only and does not act as a session limitation. Additional guests can join the table session at any time, even if the Guest Count is already set to 4.


4. Tax, Pricing & Financial

4.1 Tax & Finance 

The Taxes & Finance section is used to configure consumption tax rates, service charges, and the Qualified Invoice Registration Number required for checkout and receipt processing in Japan.

4.1.1 Taxes & Finance Fields
Field NameData TypeRequiredValidation & Input ConstraintsDescription
Standard Tax Rate (Dine-in)Decimal / PercentageYesPercentage value. Default: 10%Defines the standard consumption tax rate applied to dine-in orders.
Reduced Tax Rate (Takeaway Food)Decimal / PercentageYesPercentage value. Default: 8%Defines the reduced consumption tax rate applied to eligible takeaway food orders.
Service Charge RateDecimal / PercentageNo0% or greater. 0% disables the service charge.

Defines the service charge percentage applied to eligible orders.


  • 0% = Service charge disabled.
  • Greater than 0% = Service charge enabled at the configured percentage.
  • The configured rate is applied to eligible orders according to the system's service-charge calculation rules.
Qualified Invoice Registration Number (Japan)StringNoMust follow the configured Japanese Qualified Invoice Registration Number format.

Stores the registration number displayed on checkout receipts and checkout totals.


When configured, the registration number is displayed on:

  • Checkout receipts
  • Checkout totals
  • Other applicable invoice/receipt outputs
4.1.2 Default Tax Configuration
Tax TypeDefault RateApplied To
Standard Tax Rate10%Dine-in
Reduced Tax Rate8%Eligible takeaway food
Service Charge0%Disabled by default


image.png
  • All menu items in customer-facing views must display the tax-inclusive price as the primary visible figure (e.g., ¥1,200).

  • In the Checkout Modal and Order Receipts should be exact breakdown of standard 10% tax and reduced 8% tax must be itemized for compliance with the Qualified Invoice System.

Reference: All Posts Japan Qualified Invoice System (Invoice Seido): What Foreign Companies Must Know


4.2 Accepted Payment Gateways

The Accepted Payment Gateways section is used to configure the payment methods available to guests during checkout. Each payment method can be enabled or disabled based on the restaurant's supported payment options.

Payment Gateway Configuration (Default)
Payment MethodDefault Status
Credit CardEnabled / Disable
PayPay QR Code SettlementEnabled / Disable
LINE Pay Mobile PaymentEnabled / Disable
Register Settlement (Cash / Counter)Enabled / Disable

At least one payment method should remain enabled so that guests have an available checkout option.


5. Operations & Grace Period (min)

The Operations & Grace Period section is used to configure floor staff call reasons displayed to guests and define the time period during which guests can cancel their own orders.

5.1 Floor Staff Call Reasons

Floor staff call reasons are displayed on the guest device to allow customers to request common services without directly contacting restaurant staff

Call ReasonDisplay NameDescription
#1Water / Hot Tea Refill (Free)Guest can request cold water or hot green tea.
#2Table Bill & Checkout ReceiptGuest can request an itemized bill to be brought to the table.
#3Extra Plates, Wipes & UtensilsGuest can request additional sharing plates, wet wipes, chopsticks, or other basic utensils.
#4Questions, Special Help & ServiceGuest can request assistance with their order, including allergen inquiries or other service-related questions.

5.2 Self-Cancellation Grace Period

The Self-Cancellation Grace Period defines how long a guest can cancel an order themselves after placing it.

Field NameData TypeRequiredValidation & Input ConstraintsDescription
Self-Cancellation Grace Period (Minutes)Integer / MinutesYesMust be a positive whole number.Defines the number of minutes during which guests can self-cancel an order after placing it. Once the grace period expires, the Cancel Order control is disabled and hidden from the customer's order view, and the customer can no longer cancel the order directly.
Order Cancellation Logic (cancellationTimeWindows)

cancellationTimeWindows defines the number of minutes after an order is placed during which the customer can cancel it directly (e.g., 5 = the customer can cancel within 5 minutes of ordering).

StageSystem Behviour
Stage System Behavior Within the cancellation windowThe customer sees a "Cancel Order" control in their order/cart view and can cancel the order directly, with no staff approval required.
Window exceeded The self-cancel control is disabled and hidden from the customer's order view if the time has already been exceed. The customer can no longer cancel the order directly.
Customer still wants to cancel after the window
The customer is shown a "Request Cancellation" button instead. Tapping it sends a cancellation request to Floor Staff / Restaurant Management rather than cancelling the order automatically.
Staff review The request is actioned under the existing "Order Cancellation / Void Override" permission.