My Appointments
What this screen is for
Lists all of a customer's appointments across two tabs, Upcoming and Past, each further filterable by status. The card here is the customer's own diary and answers four questions: when, what, how much, and is it still on. It is not the business's appointment card — that one is a work order and names the customer, their phone number and the staff member assigned, none of which appears here. Anything that changes an appointment lives on the detail screen a tap opens; the only action standing on the list itself is reviewing a past visit.
When you would use this
A customer comes to this screen to check the status of a request, or to look back at a past visit.
Who sees it
Every signed-in customer sees their own appointments here.
Where it lives
Mobile app only.
What you can do here
Upcoming / Past tabs
Appointments split into two tabs by both their start time and whether they are going to happen at all; Upcoming runs forward from the nearest date, Past runs backward from the most recent one. An appointment with no start time recorded sits at the end of the past half.
Filter by status
Chips for all, pending, approved and cancelled narrow whichever tab is open; the filter is applied first, the tab split happens after it. "Cancelled" is a group rather than one status: refused, the three kinds of cancellation and a no-show record all fall under the same chip, because someone reading their own list does not think of those as five different things. An appointment turned complete by its ticket closing matches no chip at all, only "all".
Scan the card
Each card opens with the appointment's day and time and its status badge beside them; under that sit a square plate carrying the status as an icon, the service names and the price. There is no photograph on the plate — eleven rows of thumbnails would be a gallery, and what is being scanned here is a date. The badge is drawn with a coloured dot on an appointment still ahead, and dotless and muted on one already past: colour is reserved for rows that still have something to do.
Read the price as it was written
A price that is a plain amount is printed in the app's money format ("400" becomes a formatted amount with its currency symbol); a price the business wrote as a sentence is printed verbatim, because the field is free text and formatting a sentence would mangle it. On an appointment with several services the prices are printed side by side and the card invents no total; currencies can differ, and the breakdown belongs on the detail screen. The price is never squeezed: when room runs out, the service name above it is what gets truncated.
See which one in a series it is
A recurring appointment states its position in the series and the series length under the service name. No staff name is printed on that line: on a list of eleven rows a person's name reads as the customer's own, so that fact lives on the appointment's detail.
Review
A reviewable appointment in the past half carries a full-width, secondary "Review" button underneath it, which opens the review form; the filled colour on a customer's screens belongs to booking, so a review is drawn as an invitation. If a review has already been written for that appointment, a line showing the rating given stands where the button would be, and while the answer is still unknown neither is drawn. This is the only way into writing a review anywhere in the app.
Tap an appointment
Tapping the card itself opens that appointment's detail screen; cancelling, requesting a reschedule and answering a proposal are all there.
What the server accepts and refuses
An appointment that is not going to happen falls to the past half, however far ahead its time is
A cancelled, refused or no-show appointment never appears under Upcoming, even when its start time has not arrived yet: a cancelled appointment two days out used to sit above the ones that are actually happening, telling the customer to be somewhere they had already called off. A pending appointment is the exception and stays under Upcoming — an unanswered request is still something one may have to attend.
What an empty tab says depends on which chip is on
The filter applies before the tab split. With a chip selected, an empty tab says there is nothing under this filter; saying there are no upcoming appointments would be a claim the customer can see is false. That has a visible consequence: with the cancelled chip on, the Upcoming tab is always empty, because none of the statuses that chip collects counts as upcoming.
The review button applies the server rule exactly
The card does not decide for itself whether to draw the button; the decision comes from a shared eligibility function that reads the same rule the server does: the appointment must be approved or complete, and its END time - not its start - must have passed. Because the tabs split on start time, an appointment currently under way shows in the past half but carries no button, since the server would not accept it yet. An appointment whose status turned complete because its ticket was closed does get one. In the card's earlier form, where it decided alone, both of those cases came out wrong.