All projects

Calendar booking platform

Scheduling on Vue 3 — availability, bookings, confirmations and one-click Meet video links.

Vue 3webedge-dbScheduling
WebEdge Calendar login screenshotDev-story
01

Challenge

Booking needs everyone — customer, admin, provider — to see the same availability instantly, and hosted schedulers meant another paid service and someone else's database.

02

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.

03

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

01

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.

02

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.

03

Main modules and user path

M01

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

M02

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

M03

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

M04

Video-meeting scheduling: booking generates a meeting link and can route directly into Webedge Meet event creation, with a production fallback for the link

M05

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

04

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.

05

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.

Read next

These projects share nearby technical or product decisions, so they show how the same principle behaves in another context.

Have a similar idea?

Discuss your project