Skip to content
Pooya NikbakhtSenior Software Engineer

Project

Harbourview Physio: a clinic website with booking and online intake forms

A calm website for a physiotherapy clinic. Patients book by appointment type and practitioner, new patients fill in their health form online before the first visit, and the answers are waiting on the booking when they arrive.
  • Next.js
  • TypeScript
  • Tailwind CSS
  • Cloudflare Workers
  • Cloudflare D1
  • Zod
Harbourview Physio home page: a light clinic site with the headline Move with less pain, at your own pace, and a Book an appointment button.

Harbourview Physio is a fictional physiotherapy and massage clinic on the Toronto waterfront, with four practitioners and sample data. The forms ask for made-up answers only.

Problem

Clinics lose the first ten minutes of every new-patient visit to a clipboard. The front desk retypes the answers, handwriting is hard to read, and the practitioner sees the history for the first time with the patient already on the table. Booking by phone adds more back and forth on top.

What it does

  • Booking by appointment type and practitioner. Initial assessment, follow-up treatment, sports massage, pelvic health and more, with each practitioner's own hours. Patients can pick a person or the first one available.
  • An online health form before the first visit. When a new patient books an initial assessment, the confirmation links to a short form: what brings them in, where it hurts (a body-area picker), a 0 to 10 pain scale, history and consent.
  • One reminder, only if needed. If the form isn't in two days before the visit, the patient gets one reminder. Once it's filled in, the reminder is cancelled.
  • Answers on the booking. The practitioner opens the appointment and the answers are right there, laid out the way the questions were asked.
  • Edit the questions yourself. The clinic owner adds, removes and reorders questions in the admin. Old answers always show against the questions the patient actually saw.
  • A list of who still owes a form, so the front desk can follow up before the day starts.

How it helps your business

  • Visits start on time, because the paperwork is done before the patient walks in.
  • No retyping. Answers arrive typed, complete and attached to the right appointment.
  • Patients book online at any hour, with the right appointment type and practitioner.
  • The form changes as your clinic does, without paying a developer for each new question.

How it's built

  • The form rules live in one place, shared by the patient's form, the owner's editor and the tests, so they can't drift apart.
  • The form must be in before the visit is marked done, online or recorded as a paper form at the desk.
  • Privacy first. Each form link is a long random token, and the demo stores invented answers only. A real clinic would add encryption at rest and an access log for health data.

Stack

Next.js (App Router), TypeScript, Tailwind CSS, Cloudflare Workers, Cloudflare D1 with Drizzle ORM, Zod and Vitest.

Outcome

A working clinic site: book an initial assessment with a new email, fill in the health form from the confirmation page, then log in as the clinic owner and find the answers on the booking and the skipped reminder in the message log.

What you get

Two parts that work together: the website customers use, and the admin the owner runs the business from.

Part 1

The customer site

What customers see and use, on a phone or a laptop.

  • The home page, calm and clear, with booking up front.
  • What the clinic treats, in plain words.
  • Choose a practitioner or the first one free, then a time.
  • The health form patients fill in before their first visit.
  • The same site on a phone.

Part 2

The owner's admin

Where the owner runs the day, behind a login of its own for this business.

  • Today, with first visits still waiting on a form.
  • Intake forms: who still has one to do, and what came in.
  • The answers, waiting on the booking.

Try the owner admin

See the other side as the business owner. On the login page, click “Try the demo as the owner” to sign in with one click. The sample data resets every hour, so change anything you like.

Want something like this?

Send a short note on what you're building. I'll reply with questions and a rough plan.