A demo app built with Elements.
Meeting types, weekly hours and date overrides, booking pages shown in each guest's own time zone, and emailed calendar invites with reminders, reschedule and cancel.
Demo: Slotnook
- Agent: Claude Code, Opus 5.5 Medium
- Time: 21 min
- Cost: $7.01 at API rates, September 2026
elements create slotnook -scaffold=elementscode/demo-slotnookSlotnook needed open slots computed from weekly hours and overrides, booking pages that update while a guest is looking, emailed calendar invites, and reminders on a schedule. Each of those is a part of Elements, so the agent spent its 21 minutes on the scheduling itself.
-
Booking pages that update live. A channel tells every open booking page when a host's calendar changes, so a time another guest just took drops out of the picker on the spot.
-
Booking as a function call. The booking page calls
@rpcfunctions to read open times, book, reschedule and cancel, with types checked from the page to the database. Booking locks the host inside a transaction, so each time goes to exactly one guest. -
Open times from SQL. A migration defines meeting types, weekly hours, date overrides and bookings, plus a SQL function that turns them into open start times with buffers. A second migration seeds two consultants in Los Angeles and Berlin with five meeting types and bookings from guests in their own time zones.
-
Invites by email. Each confirmation, reschedule and cancellation is a background job that sends an email with a calendar file attached, so the guest's calendar follows every change.
-
Reminders on a schedule. One cron line runs a job every five minutes that sends a reminder for each booking starting within a day.
-
Sessions. Hosts sign in to manage their meeting types, hours and bookings, and every host action checks that the booking belongs to the signed-in user.
The project server runs alongside the agent and answers as soon as a file is saved: it type-checks the templates, TypeScript and SQL, applies migrations and reruns the tests, so every question came back right away and the agent kept building.
The app type-checks with zero errors and all 46 tests pass. Every page works on desktop and phone, and a time one guest books drops out of every other open booking page.
The seed creates two hosts in different time zones. Each has meeting types,
weekly hours, one date override, upcoming bookings from guests around the
world, and a few past and cancelled ones. Both passwords are slotnook-demo,
and the sign-in page lists them.
| Host | Time zone | Booking page | |
|---|---|---|---|
| maya@slotnook.dev | Maya Chen | America/Los_Angeles | /maya |
| jonas@slotnook.dev | Jonas Weber | Europe/Berlin | /jonas |
Booking pages need no account: open /maya/strategy or /jonas/discovery
and times show in your own time zone. In development, emails (with their
.ics invites) are written to .elements/logs/job.log instead of being sent.
Demo: Slotnook
MIT. See LICENSE.