Branding lives at Owner Dashboard → Branding. The page is a single form split into Company, Social Links, Legal Documents, and then one section per enabled vertical (Taxi, Shop, Parking, Service). Underneath each vertical, one card per app inside it.
The page renders a sticky Live Preview panel alongside the form on desktop. On phones, you're shown a "use a wider screen" gate — the form is too dense to drive from mobile.
The hierarchy
The branding model is three levels deep, mirroring BrandingConfig in the backend:
| Level | What lives here | Applies to |
|---|---|---|
| Company | Company name, legal name, tagline, description, website, social links, legal-document URLs, company logo set | Every app, About screen, footer, invoices |
| Per vertical | Theme (preset or custom), corner style, heading + body font | All apps inside that vertical (e.g. Taxi Passenger + Taxi Driver share one theme) |
| Per app | App name, tagline, app logo set, support email, support phone, App Store name + description | Just that one app |
A theme is not a free hex slider over a dozen tokens. You pick one of nine named presets, or switch the segmented control to Custom and supply a primary plus optional secondary and tertiary seed colors. The full light + dark palettes are then generated from those seeds and stored on the vertical brand alongside the theme choice itself.
Company section
Required at minimum: Company Name and the Primary Logo. Everything else is optional but heavily recommended for white-label.
- Identity — Company Name, Tagline, Legal Name, Website, Description.
- Logos — Primary Logo (horizontal), Square Icon (1024×1024), Wordmark horizontal, Wordmark vertical, Monochrome. Each one has an optional dark-mode variant behind a "Dark mode variants (recommended)" toggle.
- Social Links — Facebook, Instagram, X, YouTube, LinkedIn, TikTok, WhatsApp number. These render as tappable icons at the bottom of the About screen in every client app.
- Legal Documents — Privacy Policy URL, Terms of Service URL. Markdown is preferred; they appear as tappable entries on the About screen.
The company logo set is the fallback when a specific app hasn't supplied its own.
Per-vertical section
One section per vertical you enabled in your plan. Each section has:
Theme
A segmented toggle between Preset and Custom.
Preset options:
| Preset | Primary hex |
|---|---|
| Cobalt | #0253E8 |
| Coral Red | #ED3B48 |
| Earthy Green | #718A5D |
| Sunburst | #FACB20 |
| Hyper Pink | #FF0F5F |
| Indigo | #403BFF |
| Orange | #E97739 |
| Noir | #000000 |
| Ocean Teal | #57B9B4 |
Custom mode replaces the preset row with three color pickers: Primary (required), Secondary, Tertiary.
Corner Style
Three options that change the radius of buttons, cards, and chips across the vertical's apps: Rounded (8px), Sharp (2px), Pill (100px).
Typography
Two FontSelect fields, Heading Font and Body Font. The placeholders are DM Sans and Inter respectively. The list is Google Fonts — the values stored as plain font-family names (e.g. Poppins, Inter) are loaded at runtime in Flutter via google_fonts. Anything in the Google Fonts catalog is valid.
Per-app cards
Inside each vertical, one card per app (e.g. Passenger App, Driver App, Customer App, Vendor App, Parking App, Provider App). Clicking a card sets it as the live-preview target.
Each app card has:
- App Name, Tagline — what shows in the app's chrome and stores.
- App Icon — 1024×1024, opaque background. Used for the home-screen icon, app stores, and notifications. Validated as opaque on upload.
- Primary Logo — 1024×1024, transparent. Shown on splash screens and headers.
- Wordmark (horizontal), Wordmark (vertical), Monochrome — same idea as Company-level, but scoped to this one app.
- Dark mode variants — collapsed by default; expands a dashed-border block with Icon (dark), Primary Logo (dark), and both wordmarks.
- Support Email, Support Phone — surfaced inside the app's help screens.
App Store name and description fields exist on the underlying type but aren't part of this form's main inputs — they're managed when you trigger a release through Store Release.
Saving
The single button at the bottom is Save Branding the first time and Update Branding thereafter. There's no separate draft/publish step in the current implementation — the form posts the entire BrandingConfig payload in one mutation and changes go live for the next render of each app.
Native apps that bundle assets at build time (App Store / Play Store builds) won't pick up logo changes until the next Store Release. The web and shared apps render straight from the API.
What's next
- Custom Domains — pair the branding with your own hostnames.
- Plans & Billing — branding is available on every plan.
- Team & Roles — gate branding edits with the
Manage brandingpermission.