We designed and built a complete marketing and booking platform for a moving and logistics company. The brief covered everything: a public website, a multi-step quote flow, online deposit collection, post-booking customer communication, and an admin portal — all deployed to production on Vercel.
Public Website
The site is built with Next.js 14 App Router and TypeScript, using React Server Components throughout for fast load times and strong SEO out of the box. It covers a full range of service categories — moving, delivery, shipping, and business logistics — each with a category landing page and individual service sub-pages. Additional pages include an FAQ with tabbed categories, a customer reviews page, pricing, a moving checklist, contact, and full legal pages (privacy policy, terms of service, cancellation policy).
Service area and service detail pages are dynamically generated from CMS content, so new pages can be published without a code deployment.
Quote & Booking Flow
Customers submit a multi-step quote request form that adapts its fields based on the selected service type. Submissions are captured to a Supabase (PostgreSQL) database and simultaneously dispatched as notification emails via Resend — dual capture ensures no lead is lost if either system has a hiccup.
Once the owner reviews a quote and agrees on a price, they send the customer a Stripe Checkout payment link directly from the admin portal. When the customer pays the deposit, a Stripe webhook confirms the booking and updates its status automatically.
Admin Portal
A password-protected admin area gives the business owner full control over their pipeline without needing access to Supabase or Stripe dashboards. Features include:
- A quotes list with live unread-count notifications for new requests
- Quote detail pages to review submission data and send booking/payment links
- One-click status controls to move quotes and bookings through their lifecycle (new → reviewed → quoted → booked → completed)
Reviews System
Customers can submit reviews through a form on the site. Submissions go into a moderation queue and auto-publish if they meet a rating threshold. On the reviews page, these are unified with live Google Reviews — fetched via the Google Places API and cached with incremental static regeneration — and displayed in a scrolling carousel.
CMS Integration
All owner-editable content is managed through a Sanity v6 Studio hosted at /studio. The owner can update service descriptions, FAQs, testimonials, service area pages, and pricing — no developer involvementneeded for day-to-day content changes.
Infrastructure & Deployment
The project is deployed on Vercel with environment-based configuration for all third-party services. Datah versioned SQL migrations. I also resolved a tricky macOS-specific build issue where AppleDouble resource fork files (._*) were being bundled into the Vercel worker and corrupting deploys — fixed with a shell script cleanup step wired into the build pipeline.
Services delivered