Provider guide

Provider settings tutorial

This tutorial covers every major feature in the provider settings page: profile fields, ABN lookup, payout details, website normalisation, rates, menu items, item albums, extras, cancellation policy, boat invitations, gallery, password setup, validation, save flow and mobile layout.

Profile Tax & payout Menu & extras Gallery Save flow
Provider settings · /provider/settings
Page overview
Full-width settings preview so the long form and sidebar are not squeezed
01
Initial load — loads provider, gallery, menu, extras and menu-item album images.
Profile — profile photo, name, phone, experience, bio, website and Instagram.
Payment and tax — ABN lookup, TFN, GST toggle, bank account name, BSB and account number.
Commercial setup — non-catering provider rate, service/menu items, extras and cancellation note.
Media — profile image, menu item image, menu item album, extra images, and portfolio gallery.
Side tools — public profile preview, profile tips, boat invitation component and password setup component.
Sticky save — Save profile stays fixed at bottom so the provider can save from anywhere.
Purpose: This page controls how providers appear publicly and how BookMyWave admin processes provider payouts.
What you see — full-width provider settings
Profile Settings
This is what clients see when they view your public profile.
✓ Profile saved
Profile photo
H
Upload photo
JPG, PNG or WebP · Max 10MB · Cropped to square
Basic info
Payment & tax details
✓ Harbour Kitchen Pty Ltd · Active · GST registered
GST registered
Turn this on if your invoices include GST.
Food & Beverage Menu
Menu items operators can add to boats.
+ Add item
Contains alcohol
Portfolio gallery
Public profile
This is what clients see when they click your name on a boat listing.
Preview my profile ↗
Tips
✓ Add a clear professional headshot
✓ Upload 5–10 portfolio photos
✓ Set your rate or menu items
Provider settings · Initial load
Loading and API data
Provider, gallery, menu, extras and album images
02
Provider identity — fetches provider/me and redirects to provider login on 401.
Gallery — fetches provider/gallery for portfolio images.
Menu — fetches provider/menu for included service items or F&B menu items.
Extras — fetches provider/extras for non-catering add-ons.
Album images — after menu loads, fetches provider/menu-images for each menu_item_id.
Form hydration — provider fields are copied into the local form state.
Loading state
Loading...
Loaded together: profile + gallery + menu + extras, then album images per menu item.
Provider settings · Profile photo upload
Profile photo
Upload image or show provider initial fallback
03
Preview — if image_filename exists, shows /images/filename as circular preview.
Fallback — if no profile image, uses first letter of provider name.
Hidden file input — upload button triggers file input through ref.
Upload endpoint — sends FormData to upload/provider with type profile.
Saving behaviour — upload sets form.image_filename; final Save profile persists it.
Upload state — button text changes to Uploading...
Profile photo block
H
Upload photo
JPG, PNG or WebP · Max 10MB · Cropped to square
Provider settings · Basic info
Name, phone, years of experience and bio
Public profile identity and contact fields
04
Name required — save stops with name error if empty.
Phone required — save stops with phone error if empty.
Years experience — number input allows 0 to 60; saved as integer or null.
Bio — public profile description, trimmed before saving.
Error clearing — name and phone errors clear when user types.
Basic info
Phone number is required
Provider settings · Payment and tax details
Payment & tax details
ABN lookup, GST toggle, TFN, bank validation and payout fields
05
ABN cleanup — non-digits are removed before validation and lookup.
ABN validation — optional, but if provided must be exactly 11 digits.
ABN lookup — on blur, 11-digit ABN calls /api/abn-lookup and displays loading, valid, invalid, or error states.
GST auto-on — if ABN lookup returns valid and gst true, gst_registered is automatically turned on.
TFN — optional; if provided must be 8 or 9 digits.
BSB — optional; if provided must be 6 digits.
Account number — optional; if provided must be 5 to 12 digits.
Private data — section copy says these payout/tax details are not shown on the public profile.
Tax and payout form
Payment & tax details
Used by BookMyWave admin to process provider payouts and invoice records. Not shown on your public profile.
Checking ABN…
✓ Harbour Kitchen Pty Ltd · Active · GST registered
ABN must be 11 digits
Usually only needed for individual or withholding cases. Prefer ABN for business invoices.
GST registered
Turn this on if your invoices include GST.
Provider settings · Provider rate
Your rate
Only shown for non-catering providers
07
Hidden for Catering — this section is not rendered when provider.category is Catering.
Client charge — optional numeric amount charged to clients.
Blank rate — saves null for quote-per-job providers.
Charge type — flat, per_head, or per_hour.
Save payload — client_charge parses to float and charge_type falls back to flat.
Non-catering rate
Your rate
Leave blank if you prefer to quote per job.
Provider settings · Menu item photo album
Photo album per menu item
Upload, caption and delete multiple album images
09
Album load — each menu item fetches its images from provider/menu-images.
Add album image — uploads image to upload/provider as gallery, then saves filename to provider/menu-images.
Caption — updates local caption immediately, then sends PUT provider/menu-images.
Delete — removes locally immediately, then sends DELETE provider/menu-images?id=imageId.
Storage shape — local state uses menuItemImages keyed by menu_item_id.
Album editor
Photo album
+Add photo
Provider settings · Extra add-ons
Extra Add-ons
Only shown for non-catering providers
10
Hidden for Catering — extras section is only rendered when provider.category is not Catering.
Add extra — creates blank extra via provider/extras POST with price 0, unit flat and null min_order.
Fields — extra name, price, unit, min quantity and description.
Units — flat fee or per person.
Save — fields save on blur; unit saves immediately on change.
Extra image upload — function exists to upload and save image_filename for extras.
Delete — removes locally and sends DELETE provider/extras.
Extra add-on editor
Extra Add-ons
Independent items with their own pricing units.
+ Add item
Provider settings · Cancellation & change policy
Cancellation & change policy
Platform policy plus optional provider note
11
Platform policy — displays fixed cancellation rules in a grey policy box.
14+ days — no charge applies to provider.
Within 14 days — provider receives 50% of service fee; client receives no refund.
Custom note — provider can add a note visible to clients.
Save — cancellation_policy_note is trimmed and saved as null if blank.
Policy block
Client cancellation policy
• 14 days or more before event — no charge applies to you
• Within 14 days of event — you receive 50% of your service fee; client receives no refund
Provider settings · ProviderInviteBoats component
Invite boats / linked operators
External component receives provider and menuItems
12
Component — ProviderInviteBoats is rendered inside the main settings flow.
Props — receives provider and menuItems.
Use case — helps provider invite or connect boats/operators to use their services or menu items.
Placement — appears after cancellation policy and before portfolio gallery.
Important: Tutorial includes this because it is a separate component, not visible in this page file’s CSS.
Component placeholder
Invite boats to use your services
Select boat / operator
Send invitation
Provider settings · SetPassword component
Password setup
Separate SetPassword component at end of layout
15
Component — SetPassword is rendered after sidebar inside the settings layout.
Purpose — lets provider set or update their password from settings.
Separate logic — password fields and API behaviour live in the SetPassword component, not this file.
Do not miss it: It is part of the page even though it is imported as a component.
Password component placeholder
Password
Provider settings · Save profile and validation
Sticky save bar and validation rules
Final payload, success state, global errors and fixed bottom save button
16
Required checks — name and phone are required before save.
Number checks — ABN 11 digits, TFN 8–9 digits, BSB 6 digits, account number 5–12 digits.
Clean payload — numeric/tax fields remove non-digits; blank optional fields save as null.
Website normalisation — website is saved after normalizeWebsiteUrl.
PUT endpoint — saves provider profile to provider/me.
Server error — errors._global is shown and alert displays backend error.
Success — success banner and alert appear; banner disappears after 3 seconds.
Sticky footer — fixed translucent bottom bar keeps Save profile visible.
Save states
ABN must be 11 digits
✓ Profile saved
Provider settings · Mobile layout
Mobile layout
Settings form becomes single-column and controls wrap
17
Single-column layout — main and side columns collapse to one column under 800px.
Sidebar — loses sticky behaviour and appears in normal flow.
Item rows — menu/extras row fields wrap on smaller screens.
Bank row — BSB and account number stack under 600px.
Sticky footer — footer content gets smaller side padding and page has extra bottom padding.
Mobile-style settings
Profile Settings
H
Upload photo
Public profile
Preview my profile ↗