Web Platform

Sonoran Ride

A public website and operations platform for a premium Arizona guided e-bike tour company: tour discovery, a server-validated booking flow with demo payments, rider acknowledgements, and a role-aware admin that runs the day - Next.js 16, Prisma and PostgreSQL, live on Netlify as a portfolio concept.

  • Next.js
  • TypeScript
  • React
  • Tailwind CSS
  • PostgreSQL
  • Prisma
  • Stripe
  • MapLibre GL
  • Playwright
  • Vitest
  • Netlify
The Sonoran Ride homepage: a rider on an e-bike looks over a desert valley at sunset beside the headline Ride the Desert Different in white and neon yellow, Book a Tour and Explore Tours buttons, and a route card reading Camelback Vista with a drawn route line and an elevation chart.

Overview

Sonoran Ride is a complete business in software for a company that does not exist: a premium guided e-bike tour operator in Phoenix, Scottsdale and Tempe, built independently to show what product design and full-stack engineering look like when the whole operation is in scope. The public side is an editorial homepage, tour discovery with search and filters, tour pages with a MapLibre route map and elevation profile, and a booking flow that walks from tour to date, time, riders, extras, details and waiver acknowledgement to a private confirmation page with a calendar file. The operations side, behind Auth.js credentials sessions and a role matrix of owner, admin, staff and guide, is the workspace that runs the day: today's departures and a check-in mode built for a phone outdoors, a calendar with guide assignment, bookings with move, no-show, cancel and refund, recurring schedules and blocked dates, and editors for tours, guides, reviews, promotions, content and media. It is a Next.js 16 App Router application in strict TypeScript with Tailwind CSS 4, PostgreSQL through Prisma 7, and provider abstractions for payments, email, SMS and media, deployed to Netlify in demo mode, where bookings are sample records and no card is ever charged.

Engineering highlights

  • Booking writes run in serializable transactions with retry, and capacity is enforced with a conditional update so two customers cannot take the last seat
  • Pricing, promotion limits, waiver version, advance-booking window and blocked dates are all re-validated on the server; the client only ever shows an estimate
  • Live payments confirm only through verified Stripe webhook events; demo mode marks bookings as demo, charges nothing and sends no real email
  • Waiver acknowledgements are stored per participant against an immutable waiver version, so historical records are never overwritten
  • Every privileged operation calls requireUser for its area on the server; guides see only their assigned departures and can only check riders in, add notes and mark rides complete
  • Public forms are rate limited in the database so the limit holds on serverless, with an origin check and a honeypot; Vitest unit tests and Playwright end-to-end tests with axe-core accessibility checks