Colophon
This site, as the working sample
The site you are reading is the reference build: a production booking platform covering product, design, engineering, infrastructure and security in one artifact.
Product
Design
Engineering
Infrastructure
Security
Why it is here
Consulting work is usually described rather than shown, because client detail cannot be published. This site has no such constraint: it is mine, it is live, and every claim on it can be checked against the thing itself.
It is built with Next.js 16 on the App Router, React 19 and TypeScript, with business rules kept in a domain layer that has no knowledge of the framework or the database underneath it.
The booking engine
Requesting a session is a transaction, not a contact form. Available times are generated in Asia/Beirut and returned as UTC. Selecting one creates a five-minute idempotent server-side lock, so two people cannot take the same slot.
A booking then moves through an explicit state machine that rejects invalid transitions outright, and every change is written to an immutable event log. On approval the platform creates the calendar event and a Microsoft Teams meeting through the Microsoft Graph API.
Where the model is allowed to decide
The Digital Project Advisor is a deliberately narrow AI boundary. The route it recommends is chosen by deterministic rules; the language model may only improve the wording around that decision, and only server-side.
If the model is unavailable or disabled, the advisor still returns the same recommendation and simply labels it as guided rather than AI-assisted. Nothing a visitor relies on depends on the model being reachable.
Operational detail
Analytics load only after explicit consent. Provider credentials and Microsoft tokens stay server-side. Security headers are applied globally, and Firestore access is constrained by rules rather than by trust in the client.
The test suite covers the booking state machine, slot generation, timezone handling and the advisor's routing, with Playwright driving the public routes and axe checking them for accessibility violations.
A clear next step
Start with the decision in front of you.
Get preliminary direction first, or book a focused session when the question is ready.
