Work — App & Software Dev
Live · reach4thestars-cxld8.sevalla.app
Reach 4 The Stars
- Stage
- Live
- Role
- Design, build, maintain
- Field
- Therapy · Practice management · Web app
- Stack
- Next.js · Prisma · Supabase · Stripe · Microsoft Graph
A complete practice-management platform for a Norfolk therapy practice — public site, booking, payments, client portal, and a bespoke admin that runs the whole business from one place.
Free 15-minute discovery call · In person or online
01 — What it does
10 parts
Off-the-shelf practice software fits nobody's practice
Most of this project is the half nobody sees. The public site takes the booking; the admin behind it runs the practice, and every screen of it was built around how this practice actually works rather than how a generic booking product assumes it does.
- A booking flow that knows the diaryFour steps from service to confirmation, offering only slots that are genuinely free. Single sessions from a free fifteen-minute discovery call to a three-hour breakthrough, plus six- and twelve-session programmes, bookable in person, online or as a home visit.
- Availability that can't be double-bookedWeekly working hours, one-off extra dates and blocked dates, all cross-checked against Outlook through Microsoft Graph before a slot is ever offered. A personal Google calendar is read in as a second busy source, because appointments made there are invisible to Graph and were the exact way a clash used to happen.
- One client record, not sixContact details, address, tags, admin notes, the signed intake form with its signature date, a timeline of every session, and the resources and videos shared with that person — on one page, with a booking or an email one click away. New clients are onboarded by a tokenised intake link that is rate-limited and expires, and the record shows whether it was never sent, is awaiting a response, is complete, or has lapsed.
- Session notes split two waysPrivate clinical notes and client-visible notes are separate fields on the same record, so what the client reads is a deliberate act rather than an oversight. Both are encrypted at rest with AES-256-GCM.
- Bespoke pricing, privatelyNot every client fits the price list. A one-off service or programme can be created at any price and any length, unlisted, reachable only through an unguessable private link — and that token, not the browser, is what resolves the price at checkout. For bookings taken by phone the admin creates the appointment and emails a Stripe payment link; the webhook confirms it, and an unused link expires after twenty-four hours and releases the slot.
- A dashboard shaped like the working weekToday's sessions, the week ahead, revenue this month, sessions completed, unread enquiries, and the one no off-the-shelf tool offers: clients who haven't been seen in sixty days, surfaced automatically so nobody quietly slips off the books.
- Reminders and no-shows, handled on a timerA job every thirty minutes sends twenty-four-hour and two-hour reminders by email and SMS, marks them sent so nobody is messaged twice, and flags sessions that ended without being completed as possible no-shows.
- The public site is edited from the adminCopy, images and lists across the marketing pages are changed in place, with drafts, a preview, publish and discard. Prices, services and discount codes likewise. No deploy, no developer, no CMS to learn.
- Payments, tickets and a shopStripe Checkout for sessions, programmes, event tickets and shop orders, with discount codes valid across all four. Webhooks are signature-verified and idempotent, so a retried event never double-books or double-charges.
- A client portal, and compliance that holdsClients get their own area for bookings, intake, shared notes and assigned resources, plus an export of their own data on request. Behind it: an audit log of bookings, payments, notes and settings, an enforced content security policy, Turnstile and rate limiting on public forms, EU data residency, and deletion that soft-deletes then purges the personal data thirty days later.
02 — Why it exists
Danielle runs a therapy practice in Wymondham, Norfolk — clinical hypnosis, Havening, EFT, NLP, Reiki and sound healing, delivered in person, online and at The Venue. The website was WordPress; everything behind it was a diary, an inbox and a spreadsheet.
A single-practitioner therapy practice carries the administrative load of a small business with none of the staff. The clinical hour is the easy part. Around it sit availability, rescheduling, payment, reminders, intake forms, consent, notes that must stay confidential, resources to send afterwards, tickets for a sound bath, and a website that needs a price changed on a Sunday night.
The generic tools each solve one slice and none of them talk to each other. A calendar app doesn't know what was paid. A booking widget doesn't hold clinical notes. A CRM has no view of a sound bath, and none of them understand that a programme is twelve sessions drawn down over months rather than twelve separate purchases. Stitching four subscriptions together still leaves the practitioner as the integration layer.
So the admin was built to the shape of this practice specifically — down to the sixty-day gap that means someone has drifted, the bespoke price agreed in a phone call, and the second calendar that was quietly causing double-bookings. The public half was handled with the same care: the therapeutic copy was carried across from the old WordPress site rather than rewritten, the modality pages kept their URLs and every other old address redirects permanently, so launch day cost the practice no search visibility. That part is visible. The part that gives the evenings back is behind the login.
03 — Next
App & Software DevApp & Software DevFestival CompanionAn offline-first festival companion with the complete Houghton timetable, personal schedules, clash detection, QR sharing, calendar export and push reminders.