Browse / Scheduling and staffing
CloudMeet
Single-owner Calendly alternative that deploys to Cloudflare's free tier from GitHub secrets.
CloudMeet is a meeting scheduler with a public booking page, Google and Outlook calendar checks, Meet or Teams links, event types, working hours and email reminders. It runs on Cloudflare Pages, Workers and D1; the Adopter forks the template, adds a dozen repository secrets, and a GitHub Action deploys it. There is no API or agent interface.
- I'm a consultant who wants a booking link on my own domain without paying for Calendly or running a server
- I already live in Cloudflare and Google Workspace and want the scheduler to sit there too
- One admin only: ADMIN_EMAIL is the sole login, so this is a personal scheduler, not a multi-provider booking system
- Without CRON_SECRET the reminder endpoint is publicly callable
- Google OAuth app in testing mode needs the redirect URI updated after the first deploy and again for a custom domain
- No API: an agent can only book through the public page or read the resulting Google Calendar events elsewhere
Last activity Jul 2, 2026. Fit: adaptable 3, operable 0.
Adaptable: what is yours to change
Make it yours
Config only15 things to edit
Use the repo as a template, then set GitHub Actions secrets: CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID, ADMIN_EMAIL (the only account that can log in), JWT_SECRET, APP_URL, GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET; optionally EMAILIT_API_KEY and EMAIL_FROM for booking emails, CRON_SECRET to lock the reminder endpoint, and MICROSOFT_CLIENT_ID and MICROSOFT_CLIENT_SECRET for Outlook. wrangler.toml holds the Cloudflare bindings; schema.sql the D1 schema. Availability, event types and email templates are set in the dashboard. Local dev copies .env.example to .dev.vars.
- Env vars
CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_IDADMIN_EMAILJWT_SECRETAPP_URLGOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETEMAILIT_API_KEYEMAIL_FROMCRON_SECRETMICROSOFT_CLIENT_IDMICROSOFT_CLIENT_SECRET- Config files
.env.examplewrangler.tomlschema.sql- Prompt files
- none
- Accounts you need
- CloudflareGoogle Cloud (OAuth client)GitHub (Actions deploy)Emailit (optional)Microsoft Entra (optional)
Source
- github.com/dennisklappe/CloudMeet
- MIT license
- Last commit Jul 2, 2026
- 523 stars
Code stack
- Languages
- TypeScript
- Frameworks
- SvelteKitTailwind CSSCloudflare Workers
- Package manager
- npm
- Database
- Cloudflare D1
- Hosting target
- cloudflare-pagescloudflare-workers
- Built
- Unknown (recorded, never ranked)
Evidence and confidence
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | README: runs on Cloudflare Pages with a Worker cron; svelte.config.js and wrangler.toml in repo root | 90% |
| executionModel | no model SDK or AI feature in README | 95% |
| operability | no API, MCP or CLI documented; repo tree has functions/, workers/, src/ only | 85% |
| effort | README secrets table and .env.example name every variable; deployment is a GitHub Action | 95% |
| editions | README: MIT, runs entirely on Cloudflare's free tier | 90% |
| active | shortlist pushedAt 2026-07-02 | – |
| reach | 0% |
Open questions
- Does the booking page expose any JSON endpoint under functions/ that an agent could call to list slots?
- Community source: the HN thread reference in the shortlist was not located; treat the GitHub search hit as the origin
Sources
- github.com/dennisklappe/CloudMeet sourcing:scheduling-staffing:community
- meet.klappe.dev/cloudmeet sourcing:scheduling-staffing:community