← Back to Work
Business Project

Stroud Complementary Therapies

Year2026
DisciplinesDesign, Development, Deployment
Stroud Complementary Therapies screenshot 1
1 / 58
Overview

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. Double-booking is made impossible by a database-level exclusion constraint, so two people can never hold the same slot even if they pay at the same moment, and an adults-only age check is enforced from date of birth. 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 matching email sent automatically each time. The owner also edits the site's own 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 Vercel with a Neon Postgres database.

Software & Infrastructure

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, Brevo (transactional email, domain-verified sending), Vercel (serverless deployment, CI/CD), GitHub (version control, automatic deploys on push), GitHub Actions (scheduled cron for reminder emails), HTML5, CSS3, HTTPS/TLS, environment-based secret management

Outcome

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.

Next Project
Template