Stroud Complementary Therapies
A complete, live booking system handling a real practice's appointments end to end, from first enquiry through to refund, with no manual intervention needed for a normal booking. The owner runs scheduling, payments and the site's content from one admin panel without touching code, and the database-level booking protection means the system can be trusted with real money and real customers' time.
TypeScript, Next.js 16 (App Router, Server Components), React 19, Node.js, PostgreSQL, Neon (serverless Postgres, connection pooling), Stripe (Checkout, webhooks, refunds), JWT auth (jose) with bcryptjs password hashing, react-datepicker, Brevo (transactional email, domain-verified sending), Netlify (serverless deployment, CI/CD), GitHub (version control, automatic deploys on push), GitHub Actions (scheduled cron for reminder emails and daily data-retention sweep), HTML5, CSS3, HTTPS/TLS, environment-based secret management
Live appointment booking website for a real massage and reflexology practice. Customers choose one or more treatments to run back-to-back as a single appointment, pick a slot from a monthly calendar showing live availability, and pay a deposit through Stripe Checkout (card or digital wallet) to confirm. Guests verify their email with a one-time code; registered clients have their details pre-filled for faster rebooking. Checkout itself is race-safe: the slot is held by a database-level exclusion constraint the instant checkout starts, before payment, and released automatically after 30 minutes if unpaid, so two people can never end up holding the same slot even under true concurrent load. Bookings automatically deleted 7 years after the appointment. Account deletion available on request as well as automatic 2 year dormancy deletion with 23 month reminder. Unverified accounts automatically purged after 30 days and stale unpaid bookings automatically cleared. Daily automated retention sweep runs via scheduled cron with no manual action needed. The admin panel runs the whole business: generate a month's schedule in one click, add or remove availability windows (overlapping ones merge automatically), book clients in manually with no deposit, and reschedule, cancel or refund any appointment, with the respective email sent automatically. The owner also edits the site's content from the panel, including treatments and prices, the photo gallery and contact details, without touching code. Built with GDPR-compliant data handling: a full privacy notice, ICO registration, consent capture and account deletion. Deployed serverlessly on Netlify with a Neon Postgres database.
