Customer Portal

Manage bookings, files, invoices, and project delivery.

This is the authentication-ready portal interface. No fake customer data is exposed. Connect Supabase Auth, Stripe Customer Portal, and protected file storage before enabling client access.

Supabase Auth, anon key, service role, and protected customer tables/storage are not configured yet. Add NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY to enable client login.

Use invite-only access for production. Do not expose private client records without Supabase row-level security.

Backend Requirements

Built for real client operations, not fake demo accounts.

The recommended production setup is documented in supabase/customer_portal_schema.sql. It keeps client data private, makes project delivery trackable, and connects cleanly to Stripe and Resend.

Client Login

Use Supabase Auth with magic links or password login, plus invite-only access for clients with active bookings or projects.

Protected Records

Use row-level security for client profiles, bookings, projects, invoices, contracts, files, deliverables, messages, and support requests.

Billing Portal

Use Stripe Customer Portal for payment methods, invoice history, balances, receipts, and future memberships or recurring podcast plans.

Private Delivery

Use private Supabase Storage buckets with signed URLs for raw uploads, contracts, final files, download links, and client references.

Upcoming bookings

Empty state ready. Connect bookings after authentication is configured.

Invoices & payments

Stripe customer portal or Supabase-backed invoice records can connect here.

Contracts

Upload signed agreements and booking-policy documents after backend setup.

Files & deliverables

Final edits, download links, and project files will require protected storage.

Messages

Support requests and project notes can connect to email, CRM, or database records.