For Fade District, I gave myself a narrow brief: build a fictional barbershop site around booking a chair. The service list, barber profiles and shop information needed to lead somewhere, not just fill out the page.

The application uses React 19, TypeScript, Vite and Tailwind CSS v4. Content lives in a typed data.ts, and the site deploys as static assets on a Cloudflare Worker. There is no CMS or booking backend in the documented version.

01 / FIELD NOTESTwo tabs, different responsibilities

The first booking tab is a three-step scheduler built in React. It asks for a service, a barber and a time. That lets someone try the flow without needing an account with another service.

The second tab is an external scheduler embed. The original account describes accepting a visitor's Calendly or Cal.com link so an owner can see an existing tool inside the design.

Those modes may sit beside each other, but they are not equivalent implementations. The built-in scheduler is a front-end demonstration; it does not persist a reservation. The external mode relies on whatever the scheduling provider and its configuration actually support.

02 / FIELD NOTESThe URL handler formats a string

The original handler is small enough to read in full:

src/components/Booking.tsx · source URL handler / TypeScript
const loadCustomCalendly = (e: React.FormEvent) => {
  e.preventDefault();
  if (tempCalendlyUrl.trim()) {
    // Basic formatting to ensure it's a valid embed url
    let url = tempCalendlyUrl.trim();
    if (!url.startsWith("http://") && !url.startsWith("https://")) {
      url = "https://" + url;
    }
    setCalendlyUrl(url);
    setUrlLoaded(true);
  }
};
Source excerpt · not executed in this design sample · scroll code horizontally on narrow screens

It prevents the form's default submission, checks that the trimmed input is nonempty, and adds https:// if the value does not start with lowercase http:// or https://. It then stores the result and marks the URL as loaded in component state.

The comment says “valid embed url,” but the code shown does not parse a URL, check a hostname or prove that a provider will permit embedding. A nonempty arbitrary string can pass through this transformation. The title of a state flag is not a network success receipt either.

READ THE ACTUAL FUNCTION

“Loaded” is a state flag.

See the output of the source handler without following the input or creating an embed.

1 / TRIM + NONEMPTY CHECKcalendly.com/example
2 / PREFIX IF NEEDEDhttps://calendly.com/example
Formatting is not validation.

The source adds an HTTPS prefix. It does not verify the host, provider or embed permission.

DISPLAY ONLY · NO EXTERNAL CONTENT LOADED
Read the explanation without interacting

An empty trimmed string makes no update. Otherwise the handler preserves an existing lowercase http:// or https:// prefix, or adds https://. It stores the result and sets urlLoaded true. Arbitrary nonempty content is not rejected by the shown function. This page displays the string literally and never requests it.

The inspector models the published string transformation. It is not a safe URL validator, provider integration or scheduler availability check.

This inspector follows the published formatting behavior exactly and displays the result as text. It never creates an iframe or follows the value. That keeps the explanation focused on what the excerpt establishes without treating arbitrary input as a trusted destination.

03 / FIELD NOTESSelection is not confirmation

For the local scheduler, the interaction can be demonstrated independently of live availability. Pick a service, a barber and a sample time; then revisit any choice.

The project page's companion example stops at a summary labeled “No appointment booked.” That is new explanatory behavior for the portfolio, not a claim that it is the original booking component. The built-in submissions in the documented version do not persist.

The original article also describes a comparison between booking through messages and choosing a slot in a scheduler. That is a useful framing for the page's purpose. It does not supply data showing fewer missed messages, a higher booking rate or less staff time.

04 / FIELD NOTESWhat the production version would still need

The source proposes a Worker and email notifications as the next step for the local scheduler, plus an Instagram feed in place of the static work grid. Both remained future work when the article was published.

Before publishing stronger claims about the external mode, the actual embed implementation and provider configuration also need checking. The supplied handler alone cannot answer whether a particular Calendly or Cal.com link will render successfully.

The pattern is the useful part: let the website explain the service and bring a visitor to the booking task. Keep the statement about whether an appointment exists tied to the system that actually records it.

Source, dates, and what this page verifies

This rewrite describes the supplied fictional-business project and its article published July 17, 2026. The original publication date and canonical source address are preserved. The original application and current deployment have not been audited.

New miniatures are explicitly illustrative, not screenshots or full reproductions. All teaching inputs stay in memory. No booking tool, enquiry service, message provider or outside page is loaded by an interaction. Original code excerpts remain unchanged and are displayed rather than executed as application code.

The named source limits and exact explanation of each new model are recorded in docs/batch-4/SOURCE-REVIEW.md. No business, medical, conversion or performance outcome was measured for these demos.

Open the original published source ↗