Vibecode lemcal

track this build4 phases, 12 steps, beginner friendly
KINDA · weekend project
price variesbuild time weekend to multi-daycategory 📅 schedulingreplaced by 0 people

The visible sales scheduling loop is buildable, but a credible replacement needs more than the first screen. lemcal earns its keep through OAuth, calendar reliability, so expect a weekend or multi-day build and a narrower personal scope.

the project pack5 files · written for this build, step by step
README.md
# lemcal · indie build

A personal booking page whose hard problems are keeping one calendar connected through token expiry, computing availability that stays correct across a clock change, and making the promise not to double-book a database constraint rather than a check.

Estimated effort: **weekend**. Work `BUILD_PLAN.md` top to bottom · every phase ends in a check that has to pass before the next one starts.

## Stack

| Part | Choice | Why |
| --- | --- | --- |
| Runtime | One server at a stable public address with a persistent database | the OAuth redirect and the invitee both need an address that does not move |
| Calendar | One provider through OAuth, refresh token encrypted at rest | this is the whole product and also the part that quietly stops working |
| Storage | PostgreSQL with a unique constraint on event type and start instant | the promise is enforced by the database or it is not enforced |
| Time | Instants in UTC with IANA zone names stored beside them, arithmetic through a maintained zone library | nine in the morning is two different moments in the week the clocks move |
| Invitations | iCalendar attachments with a stable identifier and an incrementing sequence | a reschedule must replace the invitee's event, not add a second one |
| Email | One transactional provider sending from an authenticated domain | a confirmation in the spam folder is a missed meeting |

## Before you start

Have every one of these ready. The plan assumes them from step one.

- [ ] **Node.js 22 or newer** · free
  - Why: Runs the server, the OAuth flow and the tests.
  - Get it: nodejs.org, or nvm install 22.
  - Verify: node --version prints v22 or higher
- [ ] **PostgreSQL 16 or newer** · free locally, a few pounds a month managed
  - Why: The unique constraint that prevents double booking lives here, so the database is part of the correctness argument.
  - Get it: Your package manager, or a small managed instance.
  - Verify: A partial unique index on event type and start instant is created and rejects a duplicate
- [ ] **A Google Cloud project with an OAuth client and a decided publishing status** · free
  - Why: Testing status hands out refresh tokens that expire in seven days, which is the single most likely reason this build stops working.
  - Get it: Create the project, configure the consent screen, add the calendar scopes and note whether you left it in testing.
  - Verify: A refresh succeeds, and the publishing status is recorded in your notes
- [ ] **A stable public HTTPS address** · a few pounds a month
  - Why: The OAuth redirect and the invitee's confirmation link both need an address that survives a restart.
  - Get it: Any small host with a domain, or a tunnel with a reserved name for development.
  - Verify: The redirect completes and a confirmation link opens from another device
- [ ] **A transactional email provider key and an authenticated sending domain** · free at this volume with most providers
  - Why: Confirmations, reschedules and cancellations all arrive by email, and one in the spam folder is a missed meeting.
  - Get it: Any provider, then complete their domain authentication records.
  - Verify: A confirmation with an iCalendar attachment arrives in a real inbox and imports
- [ ] **Your clock change rule, hold window and daily cap** · free
  - Why: All three are asserted in tests, and choosing them after seeing a failure means choosing whatever already happened.
  - Get it: Write down what a rule falling in the spring gap does, how long an unconfirmed hold lasts, and the maximum bookings per day per event type.
  - Verify: All three appear in configuration and are named in the tests

## Quick start

Follow Phase 1 in `BUILD_PLAN.md`; it creates the project.

Then copy `.env.example` to `.env` and fill in the values it documents.

## Honest limits

This build deliberately does not replace:

- Team round robin and shared availability.
- Payment at the point of booking.
- Several calendars across different providers.
- Text message reminders.
- race-free booking under load
- team routing and round robin
- reliable reminders and timezone edge cases
- calendar-provider edge cases and timezone correctness
- multi-calendar conflict handling

If one of those is essential to you, that is the reason to keep paying for lemcal, and the README should say so rather than pretend.

$ choose a build depth, inspect the files, then open the complete pack in your agent

why people still pay

lemcal: People pay because a booking tool must never double-book them, leak private events, or send the wrong time to a client.

what you lose

xrace-free booking under load

xteam routing and round robin

xreliable reminders and timezone edge cases

xcalendar-provider edge cases and timezone correctness

xmulti-calendar conflict handling

share on X ↗"I just replaced lemcal with one prompt"
the escape hatch

Don't feel like building it? These folks already made it free.

zcal FreePersonalized one-use links, branded pages, reminders and Zapier are free; round-robin sales routing is paid.$0free↗

no votes, no pay-to-list · just what's real

the numbers

lemcal pricing

planmonthlyannual (per mo)what you get
starter$0/user$0/user1 calendar; 3 active meeting types; 3 availability schedules on the monthly comparison.
pro$9/user$7/user5 calendars; unlimited meeting types; unlimited availability schedules.

free tier1 user; 1 calendar; 3 active meeting types; the availability-schedule cap is internally inconsistent (3 on the monthly comparison, unlimited on the annual comparison).

billingmonthly + annual (-22%)

verified 2026-08-14 · source ↗

questions
Vibecode lemcal

Kinda. The core of lemcal is buildable in a weekend with the prompt on this page, but there are real gaps: race-free booking under load, team routing and round robin. Read the honest list above before committing.

How much does lemcal cost?

lemcal's pricing is usage-based or varies by plan · The official pricing URL is recorded, but a stable current amount was not safely recoverable in this pass. Do not publish a number until rechecked..

What do I lose by replacing lemcal?

Honestly: race-free booking under load; team routing and round robin; reliable reminders and timezone edge cases; calendar-provider edge cases and timezone correctness; multi-calendar conflict handling. If any of those are load-bearing for you, keep paying.

Is there an open-source alternative to lemcal?

Yes: zcal Free (Personalized one-use links, branded pages, reminders and Zapier are free; round-robin sales routing is paid.) The prompt is for when you want it exactly your way.