Calendar booking platform
Scheduling on Vue 3 — availability, bookings, confirmations and one-click Meet video links.
Dev-storyChallenge
Booking needs everyone — customer, admin, provider — to see the same availability instantly, and hosted schedulers meant another paid service and someone else's database.
What we did
A scheduling app on Vue 3 + webedge-db: live availability windows and bookings, running as its own project on our webedge-db backend, with our own password auth and confirmation emails through mailer.webedge.dev.
Result
Customers pick open slots, providers manage availability, and confirmations send automatically — on our own backend rather than a hosted scheduler.
Dev-story article
Calendar booking platform: how the project was built
A scheduling tool is only trustworthy if the times it offers are the times the host actually works. The slot engine here started life reading each host's "HH:MM" working hours as UTC and ignoring their configured timezone, so anyone outside UTC was offered wrong slots and daylight-saving shifts silently broke bookings. Fixing that correctly, then hardening the public-facing booking surface, drove most of the engineering.
Sections
05
Modules
05
Stack
Vue 3 + webedge-db
Why the project exists
Booking needs everyone — customer, admin, provider — to see the same availability instantly, and hosted schedulers meant another paid service and someone else's database.
A scheduling tool is only trustworthy if the times it offers are the times the host actually works. The slot engine here started life reading each host's "HH:MM" working hours as UTC and ignoring their configured timezone, so anyone outside UTC was offered wrong slots and daylight-saving shifts silently broke bookings. Fixing that correctly, then hardening the public-facing booking surface, drove most of the engineering.
What was built
A scheduling app on Vue 3 + webedge-db: live availability windows and bookings, running as its own project on our webedge-db backend, with our own password auth and confirmation emails through mailer.webedge.dev.
A full scheduling application: hosts define event types and weekly availability, guests pick open slots and book, and the system sends email confirmations plus a generated video-meeting link. It began on Fastify + MongoDB + Redis and was migrated wholesale onto our self-hosted reactive backend so availability and bookings stay live without polling, running as a tenant inside the shared webedge-db.
Main modules and user path
Timezone-correct slot engine: wall-clock working hours are converted to and from UTC through Intl.DateTimeFormat so DST is handled, iterating each host's local day instead of a UTC day
Booking-rule layer: idempotency keys, duplicate guards, per-guest active-booking caps, blackout dates, date overrides, and rolling/range period constraints, all computed as a busy-layer before slots are shown
Hardened public HTTP surface: unauthenticated ICS downloads and live calendar feeds, a JSON slots API, guest email verification required before a public booking, plus input validation, sanitized errors, and rate limits
Video-meeting scheduling: booking generates a meeting link and can route directly into Webedge Meet event creation, with a production fallback for the link
Opt-in CRM bridge: booking sync skips cleanly when no CRM is in the stack instead of leaving every booking stuck pending, with a fetch timeout and bounded retries when one exists
Architecture and technology decisions
Built with Vue 3, webedge-db, Scheduling.
Vue 3 + Vite + Tailwind on the front, our self-hosted reactive backend for schema, realtime queries, auth (password provider), scheduled functions, and HTTP actions; deployed to static hosting with the backend run as a project inside webedge-db.
Result and lessons
Customers pick open slots, providers manage availability, and confirmations send automatically — on our own backend rather than a hosted scheduler.
A working, self-hostable scheduling app whose availability is finally correct across timezones and DST, with a public booking API that validates input, verifies guests, and rate-limits abuse.
Related articles
Read next
Related project stories
These projects share nearby technical or product decisions, so they show how the same principle behaves in another context.
Dev-storyBeauty booking marketplace
A beauty & wellness booking marketplace for Lithuania — geo-search salons and book.
Dev-storyCMS
A dynamic headless CMS on webedge-db — content types, media, roles, and the public read API behind our sites and their articles.
Dev-storyFableVita
FableVita — an AI fitness coach with leagues, quests and a fraud-safe rewards economy.
Have a similar idea?
Discuss your project