How to vibe codeAppointlet
Simple scheduling for client-obsessed professionals
appointlet.com ↗SaaS & Productivity
The verdict: can you vibe code Appointlet?
Build a personal subset for a solid side project, but keep paying if you rely on bulletproof Google/Microsoft calendar webhook reconciliation.
Scheduling software looks deceptively simple as a static UI wrapper, but the engineering teeth sink in immediately when dealing with timezone offsets, daylight savings transitions, and calendar API race conditions. If two users attempt to book the exact same slot at the exact same millisecond, your database locking and webhook synchronization with Google Calendar will be severely tested. Furthermore, maintaining OAuth token refresh cycles across multiple upstream providers requires persistent background work. For personal use, building a simplified single-user booking clone is entirely achievable with AI assistance, but replacing the production reliability of a 14-year-old scheduling engine is a serious undertaking.
Estimated effort: 2-3 weeks of focused development and debugging
What you can't replicate
- 14 years of edge-case bug fixes around calendar sync failures
- Native marketplace partnerships and verified OAuth credentials with Google and Microsoft
- Embedded ecosystem distribution across hundreds of thousands of active organizations
Founded
2012
Raised
—
Team
Micro-team (~4 employees)
Cheapest paid tier
$0/mo
What Appointlet does
Online appointment scheduling software that eliminates back-and-forth friction by connecting customizable booking pages to personal calendars, automated video conferencing, and payment collection.
Core features
- Customizable booking page builder with branding and logo config
- Availability management with hardcoded breaks and notice windows
- OAuth calendar integration (Google Calendar, Microsoft Graph) for read/write conflict checking
- Slot calculation engine handling cross-timezone calculus and daylight savings
- Booking checkout flow with custom intake forms (text, multiple choice)
- Automated confirmation/reminder emails and calendar invites
- Web conference link auto-generation (Zoom, Google Meet)
- Team scheduling with round-robin distribution and joint availability
- Stripe payment integration for upfront booking fees
The business
Pricing
- Free Plan$0/mo
- Premium Plan$10/mo
Funding
Unknown / bootstrapped
Pay vs build, cumulative
Break-even at month 4 — after that, every month is money kept.
The hard parts of vibe coding Appointlet
- Timezone math and DST boundary edge cases when computing available slots across distinct user locations
- Calendar API concurrency: preventing double-booking race conditions when two clients pick the same slot simultaneously
- Strict token management and background webhook reconciliation for upstream calendar providers (Google, Microsoft)
- Relational team routing logic for weighted round-robin and multi-attendee joint availability queries
How to vibecode Appointlet
Prerequisites
Node.jsFree
Runtime environment for building and running the full-stack Next.js web application
GitHubFree
Version control and repository hosting for your codebase
Google Developer AccountFree
Required to configure OAuth credentials and test Google Calendar API synchronization
AI coding tools
Recommended stack
| Frontend | Next.js (App Router) with Tailwind CSS and shadcn/ui |
|---|---|
| Backend | Next.js Server Actions and API Routes in TypeScript |
| Database | Neon Serverless Postgres via Prisma ORM |
| Auth | better-auth |
| Payments | Stripe (Optional for personal use) |
| Other | Resend for transactional confirmation emails, Luxon / date-fns-tz for robust timezone handling |
Build guide
01Project Scaffolding & Database Schema
Initialize a Next.js project with Tailwind CSS, configure Prisma ORM with Neon Postgres, and set up better-auth for user authentication.
Create a new Next.js project using App Router, TypeScript, and Tailwind CSS. Initialize Prisma with a Neon PostgreSQL connection string. Design a robust database schema with models for User, EventType (representing meeting types with duration, buffer times, and availability rules), AvailabilitySchedule, Booking, and CustomField. Configure better-auth for email/password and Google OAuth authentication. Ensure all relational foreign keys and indices are properly established for efficient slot querying.02Availability & Timezone Calculation Engine
Build the core scheduling engine that computes available open slots by factoring in host working hours, existing calendar events, and timezone boundaries.
Build a robust timezone-aware availability calculation utility in TypeScript using date-fns-tz or Luxon. Create a server action that takes a target date, meeting duration, and host availability rules, then computes all unbooked time slots for that day. Ensure it correctly handles daylight savings time transitions, minimum/maximum notice periods, and hardcoded buffer times before and after meetings. Write unit test cases covering edge cases across UTC and local offsets.03Public Booking Page & Intake Forms
Develop a responsive public-facing booking page where clients can select a date, pick an available slot, and fill out customized intake forms.
Develop a dynamic public booking page route at app/[username]/[eventTypeSlug]/page.tsx. The page should fetch the host's configuration, render a calendar date picker, display available time slots computed from Step 2, and present a checkout form capturing custom fields (text inputs, multiple choice). Implement client-side validation using Zod and React Hook Form. Ensure the UI is fully mobile-responsive.04Booking Concurrency & Database Locking
Implement atomic transaction locking on the database to prevent race conditions when two clients attempt to book the exact same slot concurrently.
Implement the booking confirmation server action with strict database concurrency safeguards. When a client submits a booking, use Prisma interactive transactions with SERIALIZABLE or repeatable read isolation levels to verify that the target slot has not been locked or booked by another transaction. If a race condition occurs, catch the conflict and return a clear user-facing error prompting them to select a new time.05Calendar API Sync & Email Confirmations
Integrate Google Calendar OAuth and Microsoft Graph API to push confirmed bookings directly to the host's primary calendar and send email notifications.
Integrate Google Calendar API OAuth flow allowing hosts to connect their accounts. Upon successful booking creation from Step 4, trigger a server-side routine that calls the Google Calendar API to insert a new event into the host's calendar with meeting details and attendee info. Simultaneously, use Resend to dispatch formatted HTML confirmation emails to both the host and the client. Implement robust error handling and token refresh logic.06Host Dashboard & Management UI
Build a secure dashboard for hosts to view upcoming meetings, filter past bookings, export CSV data, and cancel or reschedule appointments.
Create a host dashboard at app/dashboard/page.tsx displaying a list of all upcoming and past bookings with filtering and search capabilities. Implement actions for hosts to cancel or reschedule appointments, which should automatically release the slot and notify attendees via Resend. Add a button to export all booking records as a CSV file. Secure the route behind better-auth session checks.
Cost vs paying for Appointlet
What will you build it with?
Starting total with Claude Code$0 one-time
Starting costs (one-time)
- AI Coding Assistant (Claude Pro / Cursor)$20.00
- Custom Domain (Optional)$12.00/yr
Total~$32.00 one-time
Ongoing costs (monthly)
- Vercel Hobby Hosting$0.00
- Neon Serverless Postgres$0.00
- Resend Email API (Free tier)$0.00
Total$0.00/mo
Paying for Appointlet
$10/mo (Premium Plan)
Your time to build
25-35 hours
AI tool credits
$20 (One month of Claude Pro / Cursor)
Break-even
Free forever (personal self-hosted build)
Vibe code Appointlet: FAQ
- Can you vibe code Appointlet yourself?
- Solid side project — 68/100 vibecodeable. Build a personal subset for a solid side project, but keep paying if you rely on bulletproof Google/Microsoft calendar webhook reconciliation.
- How long does it take to vibe code Appointlet?
- 2-3 weeks of focused development and debugging — roughly 25-35 hours of hands-on time with an AI coding agent.
- How do you build your own Appointlet?
- Scoped to personal use: Next.js (App Router) with Tailwind CSS and shadcn/ui on the front, Next.js Server Actions and API Routes in TypeScript behind it, Neon Serverless Postgres via Prisma ORM for data. Follow the 6-step build guide on this page — each step has a paste-ready prompt for an AI coding agent.
- How do you code your own Appointlet without being an expert?
- Use an AI coding tool (Claude Code or Cursor) and work in small steps: scaffold, data model, core screens, then deploy. Realistic effort: 2-3 weeks of focused development and debugging. The prompts on this page are written so the AI does the heavy lifting.
- How much does it cost to vibe code Appointlet instead of paying?
- About ~$32.00 one-time to start and $0.00/mo to run, versus $10/mo (Premium Plan) for Appointlet. Break-even: Free forever (personal self-hosted build).
- What stack should you use to vibe code Appointlet?
- Next.js (App Router) with Tailwind CSS and shadcn/ui; Next.js Server Actions and API Routes in TypeScript; Neon Serverless Postgres via Prisma ORM; plus Resend for transactional confirmation emails, Luxon / date-fns-tz for robust timezone handling.