Slotnook: appointment scheduling and booking pages for consultants

Slotnook: appointment scheduling and booking pages for consultants

00 Markdown

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.

Agent specs

Agent
Claude Code, Opus 5.5 Medium
Time
21 min
Cost
$7.01*

Agents work faster and more accurately on Elements.

* Cost at API rates, September 2026.

Run it yourself

Paste this prompt into your AI agent. You get the finished app on your own machine, ready to change however you like.

Agent Chat
Install elements:
curl -fsSL 'https://install.elements.dev?os=darwin' | sh && export PATH=~/elements/bin:$PATH

Create an Elements app from the elementscode/demo-slotnook scaffold:
cd ~/elements/projects
elements create slotnook -scaffold=elementscode/demo-slotnook
cd slotnook

Start the app.

Need an AI agent?

In AI desktop apps, paste into the Code tab, not the general chat.

How it's built

Slotnook 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.

What Elements gave the app

  • 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 @rpc functions 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.

What the project server gave the agent

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.

What shipped

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 code

Build it from scratch

To watch your agent build this app from an empty project, use the prompt we used instead. It takes longer than starting from the finished app above.

Agent Chat
Install elements:
curl -fsSL 'https://install.elements.dev?os=darwin' | sh && export PATH=~/elements/bin:$PATH

Create an Elements app:
cd ~/elements/projects
elements create slotnook
cd slotnook

Start the app, then build this:

Build an appointment scheduling app named slotnook, for consultants to share a
booking page.

HOST (accounts)
- Meeting types: name, length, description, buffer between meetings.
- Weekly availability, date overrides, and a time zone.
- A public booking page per meeting type.
- Upcoming and past bookings. Cancel or reschedule, which emails the guest.

GUEST (no account)
- Pick a day and an open time, shown in their own time zone.
- Enter name, email and a note, and book.
- Get a confirmation email with a calendar invite (.ics) and links to
  reschedule or cancel.
- A reminder email 24 hours before.

Seed two hosts in different time zones with meeting types, availability and
upcoming bookings. Show the seeded logins on the sign-in page.

Booked slots disappear from open booking pages in real time.

The weekly digest

New lessons, demos and posts from elements.dev, in one email a week.

Comments· 0