Structuring Your App

One Product, One App

Decide how to lay out your product as one app, with Surfaces for each audience and Modules for its features.

One Stardeck app is usually one product. You build it once. Your customers and staff use many experiences inside it.

The building blocks

ConceptWhat it isWhen you use it
AppThe product boundary: one codebase, one publishEvery product you ship
SurfaceAn audience- or device-facing mini app inside that app, with its own name, URL, icon, and access postureCustomer site, admin, POS, kitchen display, portal
ModuleA reusable capability that ships with the app (packs pick which are on)Booking, payments, shared UI, and other reusable capabilities
Info:

Every new app starts from the same foundation and gets its starting pack's Modules. Stardeck keeps that foundation up to date through updates.

One app, many experiences

flowchart LR
  MODS["Modules<br/>Catalog · Orders · Payments · Loyalty"] -->|"reusable capabilities"| APP["Restaurant system<br/>one app · one product · one publish"]
  APP --> ORDER["Surface<br/>Customer ordering"]
  APP --> POS["Surface<br/>Counter POS"]
  APP --> KITCHEN["Surface<br/>Kitchen display"]
  APP --> OFFICE["Surface<br/>Back office"]

Modules supply reusable capabilities to the app. Surfaces present those capabilities as focused experiences for different audiences and devices. They still share one product boundary and ship together.

Different audiences or devices alone do not mean you need another Stardeck app. Customer ordering, counter POS, kitchen display, and back office can live as Surfaces of one restaurant system. Marketing site, customer portal, and staff admin can live as Surfaces of one booking product.

Create a separate app only when you need a genuinely independent product, tenant boundary, owner, data model, or release cadence. See When to Create a Separate App.

How to decide

flowchart TD
  START["Create the app<br/>(with its starting pack)"]
  Q3{"Need a distinct experience for an audience or device?"}
  SURF["Add a Surface to this app"]
  Q4{"Can it share product ownership, data, and release cadence?"}
  SAME["Keep it in this app"]
  SEP["Create a separate app"]

  START --> Q3
  Q3 -->|"yes"| SURF
  Q3 -->|"no"| Q4
  SURF --> Q4
  Q4 -->|"yes"| SAME
  Q4 -->|"no: independent product, tenant, or release cadence"| SEP

Every new app starts with its pack's Modules on. Switch Modules on or off in Settings → Modules. Add a Surface for each separate audience or device experience.

Examples

Restaurant operations

One restaurant system app can include:

  • Surfaces: customer ordering, POS, kitchen display, back office
  • Modules: orders, catalog, payments, loyalty

Staff and customers each get their own launchable experience. You still publish once. See the restaurant example.

Service business

One booking app can include:

  • Surfaces: marketing site, customer portal, staff admin
  • Modules: booking, payments, notifications

Public and internal experiences share one product without sharing the same access rules.

Learn each piece