Loading...
Dashboard
Connecting...
Total clients
Upcoming shoots
Galleries in progress
Awaiting delivery
Outstanding invoices
Upcoming shoots
ClientDateTypeLocationPackageTimeStatus
Loading...
Galleries awaiting delivery
ClientShoot typeShoot dateEdit statusImagesProgress
Loading...
To-do
Loading...
← Back to companies
Company saved!
Company details
Address
Notes
← Back to companies
Name ↕ Email ↕ Phone City ↕ Shoots ↕ Services Release Source ↕
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
Recent shoots
Last 30 days
Sun
Mon
Tue
Wed
Thu
Fri
Sat
Coming up
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
Business details
Quote details
Line items
Service Hrs Rate ($)
Live preview
Total invoices
Total quotes
Expiring soon
Within 7 days
Expired / overdue
All records
TypeNumberClientAmount Issue dateDue / ExpiryCountdownStatusAction
Loading...
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 company text; alter table clients add column if not exists client_type text default 'Individual'; 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.