> For the complete documentation index, see [llms.txt](https://tyrix.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tyrix.gitbook.io/docs/script-resources/tyrix-droply/storefront-setup.md).

# Storefront Setup

Turning a business into a Droply storefront takes two people: a **server admin** wires the crafting stations, then the **business boss** builds the storefront and opens it.

{% stepper %}
{% step %}

## Admin: assign crafting stations

A business's Droply menu is projected from the crafting stations it owns. Until an admin assigns at least one station, the business does not exist as far as Droply is concerned.

1. Open the Business Manager in-game (`/business` by default).
2. Go to the **Droply** tab.
3. Pick a business, tick the crafting station(s) whose recipes should be orderable, and save.

Only stations whose `station_data.jobs` map already includes that business are selectable — a station wired for the burger shop cannot be assigned to the taco stand. This is enforced server-side; a forged payload is silently filtered.

Saving does two things:

* Writes `station_ids` onto the business's storefront row.
* **Auto-creates a stub storefront** if the business had none, so the boss has something to configure. The stub defaults to `display_name = businessId`, no prices, and `is_open = 0`.

Admin access is resolved through `exports.tyrix_business:isPlayerAdmin` — the same `Config.AdminGroups` / `Config.AdminIdentifiers` allowlist tyrix\_business uses. Non-admin attempts are logged to the `admin_stations` and `exploit` Discord channels.

> The station assignment is **admin-only** by design. Bosses cannot change which stations feed their menu, so they cannot widen their own catalogue.
> {% endstep %}

{% step %}

## Boss: build the storefront

The boss opens the **Droply** app on their phone and lands on the owner panel.

### Profile

| Field        | Limit     | Notes                                                               |
| ------------ | --------- | ------------------------------------------------------------------- |
| Display name | 64 chars  | What customers see on the browse list. Defaults to the business id. |
| Description  | 255 chars | Short pitch shown on the store page.                                |
| Address      | 128 chars | Free text, shown on the store page.                                 |
| Phone number | 20 chars  | Contact number shown to customers.                                  |
| Logo URL     | 255 chars | Square image, used on the browse list and order cards.              |
| Banner URL   | 255 chars | Wide header image on the store page.                                |

### Menu & prices

The **Menu Prices** screen lists every item the assigned stations can produce, including ones with no price yet. For each item the boss can:

* **Set a price** — an integer up to `maxItemPrice` (default `1,000,000`). An item priced `0` is not sold and stays hidden from customers.
* **Write a description** — up to 200 characters, shown under the item name.
* **Assign a category** — see below.
* **Hide it** — the eye toggle keeps the item off the customer menu without clearing its price.

Prices are validated against the station projection on save. Pricing an item the assigned stations cannot produce is rejected and logged as an exploit.

### Categories

Bosses define an ordered list of up to **16** category names (32 chars each), then assign items to them. Categories become the tab strip on the customer menu. Items with no category fall into an uncategorised group.

Assignments pointing at a deleted category or an unpriced item are dropped automatically on save — you cannot end up with dangling references.

### Delivery fee & commission

* **Delivery fee** — a flat per-order charge, added on top of the subtotal. Goes to whoever `Config.Droply.deliveryFeeRecipient` names.
* **Commission** — the business's cut of the subtotal, `0`–`1`. Leave unset to inherit `Config.Droply.defaultCommission` (30%).

### Minimum grade

`min_grade` sets the lowest job grade allowed to accept and fulfil Droply orders. Employees below it can still work the business normally, they just will not see the fulfilment side. Capped at grade 10.

### Managers

The boss can promote up to `Config.Droply.maxManagers` (default 15) employees to manager. The picker lists employees of that business who are currently online. See [Roles](/docs/script-resources/tyrix-droply/roles.md).
{% endstep %}

{% step %}

## Open the store

Tap **Open**. The store immediately appears as orderable on every customer's browse list.

Closed stores are still listed, greyed out — customers can read the menu, the about page, and the reviews, they just cannot order. Stores with **zero priced items are hidden entirely**, since there would be nothing to show.

Both bosses and managers can toggle open/closed. Every toggle is logged to the `toggle` Discord channel.
{% endstep %}
{% endstepper %}
