# How to Vibe Code Your Own Calendly (and Stop Paying for It)

> Easy automated scheduling

- Site: https://calendly.com
- Category: SaaS / Scheduling Automation
- Platforms: Web app, iOS app, Android app, Browser extension
- Verdict: **Solid side project** (72/100 vibecodeable)
- Estimated effort: 2-3 weeks of focused development and debugging

## Verdict

Build a personal-use scheduling clone for yourself, but keep paying for Calendly if you need enterprise team routing and robust multi-calendar production sync.

Creating a personal booking page linked to your primary Google Calendar is an achievable weekend project using modern full-stack web frameworks. However, scaling that into a robust tool involves dealing with messy external OAuth token expiration flows, rate limits from Google and Microsoft APIs, and edge cases with timezone offsets that take significant debugging time to iron out.

### What you can't replicate

- The viral network effect where every meeting invite exposes a new potential user to the brand
- Pre-built native compliance certificates (SOC 2, HIPAA) required for enterprise adoption
- A massive ecosystem of 100+ native enterprise CRM and marketing integrations

## What it does

Cloud-based scheduling automation platform designed to eliminate the back-and-forth friction of arranging meetings, featuring calendar sync, event types, and routing.

### Core features

- Personal booking link pages
- Google/Outlook calendar bi-directional sync
- Configurable availability hours and buffers
- Multiple event types (1-on-1, group)
- Automated email/SMS confirmation and reminders
- Timezone conversion engine
- Video conferencing link auto-generation (Zoom/Meet)

## The business

### Pricing

- Free: $0/mo
- Standard: $10/seat/mo
- Teams: $16/seat/mo
- Enterprise: Starts at $15,000/yr

### Funding

$351M raised.
- Seed Round (2013)
- Series B / Growth Round (January 2021)
Investors: Atlanta Ventures, InkWell, OpenView Venture Partners, ICONIQ Capital

Founded 2013.
Team size: 500–550.

## The hard parts

- Two-way real-time calendar synchronization without race conditions or double-booking
- Robust cross-timezone daylight saving time calculation and slot slotting
- External OAuth token refresh loops across Google and Microsoft APIs
- Reliable background notification dispatchers for reminder scheduling

## How to vibe code Calendly

### Prerequisites

- Node.js (free): Required runtime for executing the Next.js development server and package managers.
- GitHub (free): Source code control and repository hosting for deployment pipelines.
- Google Cloud Console Account (free): Required to set up OAuth credentials and API keys for Google Calendar integration.

### Recommended AI tools

- Claude Code: Agentic terminal coding tool capable of scaffolding the database schema, setting up API routes, and implementing complex calendar math across multiple files.
- Cursor: AI code editor ideal for refining UI components on booking pages and handling iterative front-end styling tweaks.

### Stack

- Frontend: Next.js with Tailwind CSS
- Backend: Next.js Server Actions / API Routes
- Database: Neon (Serverless Postgres)
- Auth: better-auth
- Payments: None (Personal clone)
- Other: Google Calendar API, Resend for email notifications

### Hosting

- Vercel (Hosting the Next.js frontend, API routes, and serverless background tasks): $0/mo (Hobby Tier)
- Neon (Serverless Postgres database storing users, event types, and bookings): $0/mo (Free Tier)

### Build guide

1. **Project Scaffolding and Database Schema** — Initialize the Next.js project with Tailwind CSS and configure the serverless PostgreSQL database schema using Drizzle ORM.

```
Create a new Next.js 16 project with TypeScript and Tailwind CSS v4. Set up Drizzle ORM configured for a Neon PostgreSQL database. Define database tables for users, event_types (id, userId, title, duration, description, bufferBefore, bufferAfter), calendar_connections (id, userId, provider, accessToken, refreshToken, expiresAt), and bookings (id, eventTypeId, hostId, inviteeName, inviteeEmail, startTime, endTime, status). Ensure all foreign keys and indexes are correctly specified.
```

2. **Authentication and User Dashboard** — Implement authentication using better-auth and build the initial user dashboard to manage profile settings and event types.

```
Integrate better-auth into the Next.js app supporting email/password registration and login. Build a protected dashboard layout with sidebar navigation. Create a page to list, create, and edit event types (specifying meeting duration, available days, and hours ranges). Include form validation with Zod.
```

3. **Google Calendar OAuth and Two-Way Sync** — Implement Google OAuth login flow to connect external calendars and fetch busy time intervals via the Google Calendar API.

```
Implement a Google OAuth integration flow allowing users to connect their Google Calendar. Store encrypted access and refresh tokens in the calendar_connections table. Create a server utility function that queries the Google Calendar Freebusy API for a given date range, handling token refreshing automatically when tokens expire.
```

4. **Availability Slot Generation Engine** — Build the core availability algorithm that intersects user-defined weekly hours, buffer times, and existing calendar busy slots.

```
Write a robust availability calculation engine in TypeScript. Given an event type's duration, buffer settings, a user's weekly working hours, and busy intervals fetched from Google Calendar, compute all available bookable time slots for a selected date in the visitor's local timezone. Handle daylight saving time shifts correctly by using date-fns-tz.
```

5. **Public Booking Page and Flow** — Create a clean, responsive public booking page where invitees can select an available time slot and confirm their meeting.

```
Build a dynamic public booking page route at /[username]/[eventSlug]. The page should fetch the host's active event type, display an interactive date picker and available time slots calculated for the visitor's timezone, and present a booking form asking for the invitee's name and email. On form submission, insert the booking record into the database.
```

6. **Automated Calendar Event Creation & Email Notifications** — Ensure confirmed bookings automatically create corresponding events in the host's Google Calendar and dispatch confirmation emails.

```
Update the booking creation server action to make a secondary API call to the Google Calendar API to insert a new calendar event on the host's connected calendar with the invitee details and meeting description. Additionally, integrate Resend to dispatch professional HTML confirmation emails to both the host and the invitee immediately upon successful booking.
```

### Cost vs paying

**Starting costs (one-time):**

- AI Coding Assistant Subscription: $20
- Custom Domain (Optional): $12/yr
- Total: ~$32 one-time

**Ongoing costs (monthly):**

- Vercel Hobby & Neon Free Tier: $0/mo
- Resend Free Tier: $0/mo
- Total: $0/mo

- Paying for the SaaS instead: $10/seat/mo (Standard)
- Build time: 25-35 hours
- AI tool credits: $20 (One month of Claude Pro / Cursor)
- Break-even: N/A (Built for personal use/learning)

## Sources

- [Calendly Official Website & Pricing Pages](https://calendly.com)
- [PitchBook - Calendly Company Profile](https://pitchbook.com)
- [TechCrunch - Funding Reports](https://techcrunch.com)