I built a Calendly alternative on Cloudflare Workers with no framework and no build step
Description and use
Calendo is a scheduling app built entirely on Cloudflare Workers and D1 SQLite, with no frameworks or build step. It features an AI agent that uses the same backend functions as the UI and limits AI usage. A demo page lets users test booking logic without persisting data.
Problem
Build a free, low‑cost scheduling app that can run on a minimal stack and still support AI‑powered scheduling.
Outcome
Calendo demonstrates that a scheduling platform can be built with minimal tooling, low cost, and maintainable code, while integrating an AI agent that respects user limits and safety constraints.
Workflow
- 1. Deploy a Cloudflare Worker with a single entry module that exports only functions. 2. Store data in D1 SQLite. 3. Serve plain HTML/CSS/JS for the frontend. 4. Implement AI agent that calls the same backend functions as UI buttons. 5. Enforce per‑user daily AI message limits via a D1 table. 6. Provide a demo page that runs booking logic but aborts before DB insert and network calls. 7. Write ~1,200 unit tests, including in‑memory SQLite schema tests, HTTP smoke tests, and browser tests. 8. Run CI tests with a 5‑second timeout to catch slow tests before deployment.
Evidence
Everything runs on Cloudflare Workers. The database is D1, which is SQLite. The frontend is plain HTML, CSS and JavaScript. There is no React, no bundler and no build step.
The agent calls the same functions the dashboard buttons call. Each action (create event type, change availability, cancel a booking, and so on) is a tool the model can use.
Each user gets a daily allowance of AI messages, stored in a small D1 table keyed by user, day and kind.
The demo page at calendo.dev/demo runs the full booking code path, including slot checks, and stops just before the database insert. No emails, webhooks or calendar calls go out.
There are about 1,200 unit tests, plus an HTTP smoke test and browser tests.
- Record date: 2026-10-24T19:11:27.072Z