c Chime / Appointment scheduling

A smallpromise.

Chime connects customer booking with the business’s schedule, deposits, and email. I built its booking flow and business workspace, Chime Studio, around one idea: an appointment should be easy to book and straightforward to manage.

Chime appointment studio alongside its mobile customer booking experience
The customerA time that works
The businessRoom to honor it
ChimeBoth sides of the appointment
Customer bookingServices, available times, and a guided booking flow.
Business studioAppointments, team schedules, and customer records.
DepositsAuthorization, collection, and refund history.
EmailConfirmations, appointment changes, and sending status.
A moment in the studio

An appointment, in motion.

Find an appointment, review its details, and see how the studio handles a schedule change.

36 seconds · Sample appointments · No soundDownload the video ↓
Read the walkthrough

Start with the week’s appointments. Open one to see the customer, service, team member, and time together. Add an appointment from the calendar, then move an existing appointment and review the change before confirming it.

Choosing a time is only the beginning of making an appointment work.
The starting point

An available time depends on more than an empty calendar. The business needs someone who performs the service, enough time to complete it, and room for any preparation or cleanup. A change to those conditions can change what a customer is able to book.

Chime gives customers and staff different views of the same appointment. The booking flow presents the choices needed to reserve a time. The studio brings together the schedule, customer record, payment history, and messages needed to manage it.

The design problem was deciding what belongs at each step. I kept the customer journey focused, while giving the team access to the underlying details when an appointment needs attention.

01 / CHOOSING

Make the commitment clear.

The service summary shows duration and price, with any required deposit shown separately. Customers can see what they are booking and what is due now.

02 / COMMITTING

Check availability before confirming.

A booking uses the business’s published availability. The server checks remaining capacity again before confirming the appointment.

03 / FOLLOWING THROUGH

Keep the history connected.

The customer, appointment, payment, and messages remain linked, so staff can review the current situation before making a change.

Customer booking

One decision at a time.

The flow separates service selection from availability, then carries the chosen service, time, and price into the remaining steps. Customers can review the appointment as they complete the terms, contact details, and any required deposit.

  1. ServiceChoose a service and review its duration and price.
  2. Date & timeSelect an opening in the published schedule.
  3. TermsRead and accept the business’s terms.
  4. ContactProvide the details needed for confirmation and follow-up.
  5. DepositReview and complete any required deposit.
  6. ConfirmationReview the confirmed appointment and add it to a calendar.

If the time is no longer available when the customer submits, Chime asks them to choose another slot. Confirmation depends on that final check.

Chime mobile day view showing available appointment times
Chime mobile month view showing open and filling-fast dates
Business studio

A schedule with context.

The studio keeps appointments in the context of the day. Staff can add a booking, review customer details, or move an appointment from the calendar. Changes have a review step; when customer approval is required, the original time stays in place while the proposal is pending.

Chime studio interface for adding an appointment while viewing the schedule
Add an appointment with the day in viewSchedule
Chime review panel confirming a schedule change before notifying the customer
See what a change will doReview
Chime message center showing customer communication status
See what was sent and what needs attentionEmail
Appointment detailsTime, service, assigned team member, and status
Customer recordsContact details, appointment history, and notes
Pending changesThe proposed move and whether approval is still needed
Related activityPayment history and email status for the appointment
Branding and setup

It should feel like their business.

The booking flow is part of the business’s customer experience. I put its branding and wording controls in the studio, beside a preview, so staff can see how a change will appear before saving it.

Customize the customer viewAdjust the logo, colors, wording, and service order with the preview in view.
Choose how customers enterOffer booking inline, in a modal, through a floating button, or on a hosted page.
Check that customers can bookThe launch checklist identifies missing team assignments and checks whether the published schedule has bookable times.
Chime widget designer with brand controls and a live customer preview
Chime payments ledger showing authorized and collected deposits
Deposits and payment history

A deposit has a history.

Authorization places a hold; capture collects it. A release cancels an uncaptured hold, while a refund returns some or all of a collected payment. Chime records these states against the appointment and routes new deposits through the business’s connected Stripe account.

  • Service price and depositThe booking summary distinguishes the full service price from the deposit required to reserve it.
  • Collection, release, and refundsThe studio provides these actions alongside the payment history, including partial refunds.
  • Updates from StripeProvider updates feed back into the payment record, including failures and refunds.
  • The original payment accountA later refund uses the account that took the deposit, even if the business has since connected a different account.
Engineering

The logic behind the booking.

The customer flow and studio have separate APIs, with both working against the same PostgreSQL database. Availability, business ownership, and payment state need to remain consistent whichever interface a person uses, including when several people act at once.

01 / AVAILABILITY

Reserve the remaining capacity.

When a customer books, the server locks the availability row, rechecks capacity and notice requirements, and saves the booking in a database transaction. Competing requests wait while that slot is updated.

02 / CHANGES

Keep proposed changes separate.

A move that requires approval remains pending while the original appointment stays in place. Chime checks availability again when the customer accepts, before applying the new time.

03 / BOUNDARIES

Separate each business’s records.

Requests carry the business identity and check the operator’s current access. Database relationships also include business ownership, keeping related appointments, customers, and payments within the same business.

04 / RECOVERY

Make payment retries deliberate.

Payment actions use an idempotency key to identify a repeated request and a version check to detect an outdated record. A retry can refer to the original action instead of becoming a new payment instruction.

Email and background delivery

Did the message go out?

An appointment change and its email are separate operations. Chime records messages in a delivery queue, then a background worker sends them and records the result. Staff can check whether a message is waiting, handed to the provider, or failed.

WaitingQueued messages awaiting a sending attempt.
SentSuccessful handoff to the email provider, recorded in the history.
Needs attentionA failed attempt, its reason, and a route to retry.
TemplatesCustomer emails that the business can edit and test.

The worker takes turns across businesses, so one reminder backlog does not fill every batch. Failed attempts can be retried, and unfinished work can be reclaimed if a worker stops.

Chime message center showing sent communications and delivery status
My role and implementation

Designing the whole appointment.

I designed and built the booking experience, business studio, and the services behind them. That work includes the visual identity, interface writing, data model, APIs, payment integration, and operating tools. Working across those parts let me make the labels, messages, and system behavior describe the same decisions.

Role
Product design, brand, interface writing, architecture, and full-stack engineering
Product
Customer booking widget, hosted booking page, and business operations studio
For
Service businesses coordinating appointments, team availability, and customers
Focus
Clear decisions, consistent scheduling, understandable payments, and a way to recover when something fails
01

Product interfaces

React and TypeScript applications for customer booking, the business studio, customer approvals, and website embeds. Each presents the part of the appointment its reader needs to handle.

02

Data model and APIs

Node.js and Express APIs connect appointments with services, staff, customers, and payments. PostgreSQL constraints preserve business ownership and scheduling relationships.

03

Payments and background work

Stripe Connect supports deposit collection, release, and refunds. A separate notification worker manages queued emails, retry timing, and records of sending attempts.

04

Verification and operation

The repository includes checks for booking capacity, business boundaries, payment routing, and accessibility, alongside migration, backup, restore, and launch rehearsal tools.

ReactTypeScriptViteNode.jsExpressPostgreSQLStripe ConnectRESTDockerGitHub ActionsPuppeteeraxe-coreSentry
The intention behind Chime

Less to keep in your head.

A useful appointment system should let someone pick up where the last person left off. That is the aim behind Chime: a clear booking for the customer, and enough shared context for the team to manage what follows.