Custom booking system for art studios
Booking widget, payments, guest portal and staff console instead of a paid SaaS
The brief: Shot of Art, a chain of 7 studios in the US, ran on Peek Pro and kept hitting its limits: about 40 complaints, from cross-location promo codes and memberships to bulk date closures and missing reports. They needed their own system at parity by the end of 2026.
- Before writing code I wrote the spec and acceptance criteria (“Peek parity plus every complaint closed”) and a 13-sprint plan, walked through Peek live and built a parity table.
- Step-by-step booking widget: date, time, guests, add-ons, questions, contacts, payment, plus an embeddable version. No double bookings: 6 simultaneous bookings for 4 free spots give exactly 4.
- Guest portal from an email link: rescheduling, add-on purchases, signed e-waivers, a kiosk mode for the front desk. Reminders 24 h and 2 h before.
- Memberships, gift cards, promo codes, rooms and resources, bulk scheduling, date-based pricing.
- Staff console: sales, calendar, slot manifest, register, guests with duplicate merge, audit log, emails to a guest or a whole slot with delivery status.
- Two-factor sign-in for roles with access to money, a security audit before the pilot, Sentry and Better Stack monitoring.
- Every screen passes lint, type checks, unit tests and Playwright with accessibility checks at 390 and 1440 px.
Result: The system is deployed with more than 4,000 automated tests. Before the pilot I checked 34 areas of studio work against Peek; switching the site to the system and back takes minutes. Stripe payments are tested in test mode. The live-booking pilot in the Houston studio is next.
Open site: booking.shotofart.com Public storefront; the console and guest data are under NDA
Next.js, React, TypeScript, PostgreSQL, Drizzle, Stripe, Resend, Playwright, Sentry