Skip to main content
Calhoun.
Get a Quote
All work

Case study · 2026

Madison Faith Photo

A custom photography platform that combines an editorial marketing website with a secure studio dashboard, client portal, Stripe payment workflow, and private gallery delivery system.

Visit live website
Client
Madison Faith Photo LLC
Location
Brooksville, Florida
Project type
Public website and private business platform
Homepage design for Madison Faith Photo

The challenge

Unify a high-touch brand experience with the systems behind the business.

The project needed to do more than present a polished photography portfolio. Madison needed a public site that reflected her soft, editorial brand while also reducing the manual work involved in tracking inquiries, clients, sessions, balances, payments, and gallery delivery. Those public and private experiences needed to feel visually connected without exposing client information or business records.

The solution

One branded platform for discovery, booking, management, payment, and delivery.

I built the project as one Next.js application with three connected layers: a public marketing site, a protected studio dashboard, and an authenticated client portal. Shared brand tokens keep the visual language consistent, while server-rendered routes, Supabase data access, Stripe-hosted checkout, and private storage handle the operational work behind the scenes.

Key capabilities

  • Editorial homepage, gallery, about, experience, and inquiry pages
  • Responsive portfolio galleries with image-first layouts
  • Protected admin dashboard for clients, sessions, payments, and galleries
  • Passwordless client access through Supabase magic links
  • Client-specific session details, balances, payments, and gallery progress
  • Stripe-hosted payment requests with webhook status updates
  • Private gallery storage with expiring signed image URLs
  • Technical SEO, sitemap, structured data, analytics, and performance monitoring

Technology stack

  • Next.js 16 App Router
  • React 19
  • TypeScript
  • Supabase Auth
  • Supabase Postgres
  • Supabase Storage
  • Stripe Checkout
  • Vercel Analytics
  • Vercel Speed Insights

Services provided

  • Brand-led web design
  • Responsive Next.js development
  • Technical SEO
  • Supabase architecture
  • Admin dashboard development
  • Client portal development
  • Stripe Checkout integration
  • Private gallery delivery

Technical architecture

A public website and private application sharing one design system.

Application structure

Route-based application architecture

The application uses the Next.js App Router and separates public content, admin workflows, client routes, authentication callbacks, payment endpoints, and gallery pages by route. Server Components handle most page rendering and data queries, while focused client components are reserved for interactions such as inquiry forms, gallery controls, payment-link copying, and image uploads. Repository modules translate database rows into typed application models so the UI is not tightly coupled to raw Supabase responses.

Identity and access

Admin accounts and client magic links

Supabase Auth provides two distinct entry paths. The studio owner signs in through the protected admin area, while clients request passwordless magic links using the email attached to their client record. Request middleware refreshes sessions and checks route access. Admin membership is verified against a dedicated admin_users table, and client records are matched to authenticated email addresses before portal information is loaded.

Gallery delivery

Private storage with expiring access

Private galleries use database records for gallery state and image order, plus a non-public Supabase Storage bucket for original files. Admin tools support bulk uploads, cover selection, image ordering, download controls, expiration dates, and delivery status. Client gallery pages receive signed URLs that expire after one hour, so photographs are not exposed through permanent public asset links.

Data and access controls

Private records stay separated from the public website.

  • Row Level Security on clients, sessions, payments, galleries, images, and favorites
  • Dedicated admin membership checks before protected dashboard access
  • Client policies limited to records associated with the authenticated email
  • Server-only Supabase service role usage for verified Stripe webhook updates
  • Stripe signature verification before payment records are modified
  • Private gallery bucket with authenticated storage policies
  • One-hour signed URLs for protected gallery images
  • Noindex directives for private admin and portal routes

Engineering decisions

Designed around the complete photography workflow.

  • The public site and business platform share a single responsive brand system without sharing access rules.
  • The application can fall back to structured demo data when Supabase is not configured, which supports local interface development.
  • Stripe Checkout keeps card entry on Stripe-hosted pages rather than inside the application.
  • Webhook handling updates payment state idempotently and prevents a completed request from being credited twice.
  • Gallery status controls determine when a finished gallery becomes visible in the matching client portal.
  • Database foreign keys and deletion behavior keep related client, session, payment, and gallery records consistent.

Inside the platform

One visual system across the public site and private workflow.

The public experience remains photography-led, while the private tools use the same restrained palette and typography to make operational information easy to scan.

Madison Faith Photo studio dashboard with client, session, balance, and gallery summaries
The studio dashboard brings active clients, upcoming sessions, balances, gallery progress, and current projects into one workspace.
Madison Faith Photo client portal showing project and payment summaries
Each authenticated client sees only their own sessions, payment totals, open balances, gallery progress, and delivered work.
Madison Faith Photo public gallery page with wedding and lifestyle photography
The public gallery keeps the photography central through an editorial layout, restrained typography, and image-led browsing.

The result

A polished client experience supported by a practical studio operating system.

The finished platform gives prospective clients a clear, premium path from portfolio browsing to inquiry while giving Madison one place to manage the work that follows. Client and session records, secure payment requests, account balances, private galleries, and portal access are connected through a consistent data model. The result is a website that supports both the brand clients see and the studio operations they do not.

A note about this project

The public website is available at MadisonFaithPhoto.com. The admin dashboard, client records, payment tools, and private gallery contents are protected and are shown here only through staged demonstration data.

Have a project in mind?

Let's build something that fits the way your business works.

Start Your Project