Zencal logo

How to vibe codeZencal

Online booking and service sales platform

zencal.io

Scheduling & Service Sales SaaS

68/ 100
Solid side project

The verdict: can you vibe code Zencal?

Build a personal service scheduling clone for yourself, but keep paying if you rely on multi-user team routing and regional payment gateways.

The core booking loop (pick slot, save meeting, email confirmation) is straightforward. However, maintaining reliable two-way calendar sync with Google and Microsoft without hitting rate limits or timezone corruption requires careful engineering. Background jobs for SMS reminders and atomic Stripe payment locks add noticeable integration friction.

Estimated effort: 2-4 weeks part-time

What you can't replicate

  • Zencal's established user base and specialist trust
  • Pre-integrated regional European payment processors (Przelewy24, tPay, PayU)

Founded

2022

Raised

Team

Small boutique team

Cheapest paid tier

$10/mo

What Zencal does

An online booking and service sales platform combining multi-directional calendar sync, payment processors, automated invoicing, SMS/email reminders, and team routing.

Core features

  • Meeting types & service definition
  • Hosted booking profile page & embeddable widget
  • Two-way calendar sync (Google Calendar, Outlook)
  • Real-time availability conflict calculation
  • Stripe payment gateway integration
  • Automated email & SMS reminder sequences
  • Team round-robin assignment routing
  • Basic revenue & booking analytics dashboard

The business

Pricing

  • Light$10/mo
  • Pro$28/mo
  • Team$349/mo
  • EnterpriseCustom

Funding

Unknown / bootstrapped

Pay vs build, cumulative

Break-even at month 2 — after that, every month is money kept.

The hard parts of vibe coding Zencal

  • Two-way calendar sync handling timezone shifts and preventing infinite webhook sync loops
  • Robust background job queues for time-sensitive global SMS/email reminders
  • Team round-robin scheduling logic with overlapping schedules and buffer times
  • Atomic payment-to-booking finalization ensuring slots lock only upon successful charge

How to vibecode Zencal

Prerequisites

  • Node.jsfree

    Runtime environment for Next.js development

  • GitHubfree

    Source control and deployment pipeline

  • Stripe Accountfree

    Processing test-mode payments for booked services

AI coding tools

Recommended stack

FrontendNext.js with Tailwind CSS and shadcn/ui
BackendNext.js App Router API Routes
DatabaseTurso (SQLite at the edge)
Authbetter-auth
PaymentsStripe
OtherResend for transactional email notifications, Twilio for SMS reminders, Inngest for durable background jobs

Hosting & infrastructure

CloudflareHosting Next.js frontend and edge API endpoints$0-5/mo

Build guide

  1. 01Scaffold Project & Database Schema

    Initialize Next.js project with Tailwind CSS, configure Turso SQLite connection, and define database schemas for users, meeting types, bookings, and availability schedules.

    Scaffold a new Next.js project with TypeScript, Tailwind CSS, and Drizzle ORM configured for Turso SQLite. Create database tables for users, event_types (title, duration, price, description, buffer_time), bookings (host_id, client_name, client_email, start_time, end_time, status, stripe_payment_id), and availability_schedules (user_id, day_of_week, start_time, end_time). Ensure strict foreign key constraints and timestamp indices. Add validation schemas using Zod for all incoming request bodies.
  2. 02Authentication & Host Profile Setup

    Integrate better-auth for secure host login and build profile settings to manage username slugs and branding.

    Configure better-auth in the Next.js app supporting email/password and Google OAuth. Implement protected dashboard routes where a logged-in user can configure their profile slug (e.g., /app/username), upload an avatar, set their default timezone, and manage their general settings. Create a public profile page route at /[slug] that fetches the user's active meeting types and renders them cleanly.
  3. 03Availability Calculation & Booking Engine

    Build the core booking availability engine that computes open time slots based on weekly schedules and existing appointments.

    Build an API route /api/availability that accepts a userId, eventTypeId, and date range. The endpoint must evaluate the host's weekly availability templates, subtract existing confirmed bookings and buffer times, account for the client's timezone, and return an array of available start slots. On the frontend, build an interactive datepicker and time slot selection UI for clients visiting /[slug]/[eventType].
  4. 04Stripe Payments & Booking Confirmation

    Integrate Stripe Checkout to capture payment before finalizing appointment creation.

    Implement Stripe Checkout integration for paid meeting types. When a client selects a slot and submits their contact details, create a Stripe Checkout session with metadata containing the eventTypeId, hostId, slot start/end time, and client details. Set up a Stripe webhook endpoint (/api/webhooks/stripe) that listens for checkout.session.completed events, securely verifies signatures, creates the confirmed booking record in Turso, and triggers confirmation emails.
  5. 05Google Calendar Two-Way Sync

    Connect host Google Calendar via OAuth to block busy times and push confirmed bookings.

    Implement Google Calendar OAuth connection in the user dashboard. Store encrypted refresh tokens securely. Write a background service utility that fetches free/busy calendar intervals from Google Calendar API when computing available slots, and automatically creates a calendar event with a Google Meet link when a new booking is finalized via Stripe webhook.
  6. 06Automated Reminders & Polish

    Configure durable background jobs via Inngest to send automated email and SMS reminders before meetings.

    Integrate Inngest for background job processing. Create an event-driven function triggered upon booking creation that schedules reminder events to be sent 24 hours and 1 hour before the meeting start time. Use Resend to send HTML email notifications and Twilio to send SMS reminders containing appointment details and rescheduling links. Build a host dashboard view displaying upcoming revenue stats and client lists.

Cost vs paying for Zencal

What will you build it with?

Est. 4.5M in / 1.2M out tokens· Hobby tier includes limited Agent requests, limited Tab completions, and basic model routing.$0

Starting total with Cursor$0 one-time

Starting costs (one-time)

  • AI Coding Assistant Pro subscription$20
  • Custom domain name (optional)$12

Total~$32 one-time

Ongoing costs (monthly)

  • Cloudflare Edge Hosting$0-5/mo
  • Twilio SMS usage (personal volume)~$2/mo
  • Resend Email API (free tier)$0/mo

Total~$5/mo

Paying for Zencal

$28/mo (Pro Plan)

Your time to build

35-50 hours

AI tool credits

$20 one-time (Cursor/Claude Pro)

Break-even

1 month

Vibe code Zencal: FAQ

Can you vibe code Zencal yourself?
Solid side project — 68/100 vibecodeable. Build a personal service scheduling clone for yourself, but keep paying if you rely on multi-user team routing and regional payment gateways.
How long does it take to vibe code Zencal?
2-4 weeks part-time — roughly 35-50 hours of hands-on time with an AI coding agent.
How do you build your own Zencal?
Scoped to personal use: Next.js with Tailwind CSS and shadcn/ui on the front, Next.js App Router API Routes behind it, Turso (SQLite at the edge) 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 Zencal without being an expert?
Use an AI coding tool (Cursor or Claude Code) and work in small steps: scaffold, data model, core screens, then deploy. Realistic effort: 2-4 weeks part-time. The prompts on this page are written so the AI does the heavy lifting.
How much does it cost to vibe code Zencal instead of paying?
About ~$32 one-time to start and ~$5/mo to run, versus $28/mo (Pro Plan) for Zencal. Break-even: 1 month.
What stack should you use to vibe code Zencal?
Next.js with Tailwind CSS and shadcn/ui; Next.js App Router API Routes; Turso (SQLite at the edge); plus Resend for transactional email notifications, Twilio for SMS reminders, Inngest for durable background jobs.

Sources

Alternatives & community builds

All alternatives →