Loading...
Dashboard
Connecting...
Total clients
Upcoming shoots
Galleries in progress
Awaiting delivery
Outstanding invoices
Upcoming shoots
ClientDateTypeLocationPackageStatus
Loading...
Galleries awaiting delivery
ClientShoot typeShoot dateEdit statusProgress
Loading...
All clients
NameEmailPhoneCityShootsServicesReleaseSource
Loading...
← Back to clients
Client added and saved to your database!
Contact information
Address
Services required
Additional details
← Back to client
Client details updated!
Contact information
Address
Services required
Additional details
Shoot schedule
ClientDateTypeLocationPackageDepositStatus
Loading...
Booking saved to your database!
Booking details
Shoot history note (optional)
← Back to client
Booking confirmation details
Preview
Gallery tracker
ClientTypeDateStatusProgressGallery linkAction
Loading...
Business details
Invoice details
Line items
Service Hrs Rate ($)
Live preview — A4
Total outstanding
Pending invoices
Deposits awaited
Outstanding invoices
ClientInvoice #TotalBalance dueDue dateStatusAction
Loading...

No packages yet — create your first one below.

Create package
Business settings
Settings saved — invoices will now use these details automatically.
Appearance
Accent colour
Display mode
Database connection
1
Run SQL in Supabase (first time only)

Go to your Supabase project → SQL Editor → New query. Paste and run:

alter table clients disable row level security; alter table bookings disable row level security; alter table deliverables disable row level security; alter table invoices disable row level security; create table if not exists settings ( id int primary key default 1, business_name text, email text, phone text, abn text, bsb_account text, address text, constraint single_row check (id = 1) ); insert into settings (id) values (1) on conflict do nothing; alter table settings disable row level security; -- Add contract tracker to clients (run once): alter table clients add column if not exists services_required text; alter table clients add column if not exists contract_signed text default 'No'; alter table clients add column if not exists deposit_received text default 'No'; alter table clients add column if not exists final_payment text default 'No'; alter table clients add column if not exists gallery_delivered text default 'No';
2
Connection status
Checking connection...
3
Custom domain (Cloudflare)

When you are ready to use a custom domain like clients.mashfordphotography.com.au, upload this file to Cloudflare Pages and point a CNAME at it. Everything else stays the same.