YourCal is a reusable scheduling-product starter kit: a responsive landing page, a Free/Pro application, public booking pages, Supabase persistence, and a Google Calendar integration layer.
The repository is designed to work in two modes:
- Demo mode: run it immediately without credentials. Data is temporary and resets on refresh.
- Connected mode: add Supabase credentials. Authentication, event types, availability, bookings, plans, and calendar connections use the included backend.
- Responsive marketing site and pricing
- Passwordless email and Google sign-in
- Free and Pro workspace plans
- Event types and public booking links
- Weekly availability and date-override schema
- Transactional booking creation with overlap protection
- Dynamic monthly availability generated from schedules, existing bookings, buffers, notice rules, and Google free/busy data
- Google Calendar OAuth token encryption, refresh, calendar listing, free/busy checks, and event creation
- Row Level Security for customer data
- Supabase migrations, seed data, and Edge Functions
- Vercel configuration
- Setup instructions for people using Codex or Claude Code
npm install
npm run devOpen http://localhost:5173. Without .env.local, YourCal automatically uses demo mode.
Follow docs/SETUP.md. The short version is:
- Create a Supabase project.
- Copy
.env.exampleto.env.localand add the project URL and publishable key. - Link the repository with the Supabase CLI.
- Push the included migration and deploy the Edge Functions.
- Configure Google OAuth and the Calendar API.
- Import the GitHub repository into Vercel and add the same browser-safe environment values.
src/
config/product.js Brand, demo profile, pricing, and feature switches
lib/supabase.js Browser client and connected-mode detection
services/auth.js Magic-link and Google authentication
services/data.js Application data operations
supabase/
migrations/ Versioned database schema and security policies
functions/ Protected booking and Google Calendar operations
seed.sql Reproducible plan data
docs/
SETUP.md Complete installation guide
GOOGLE_CALENDAR.md Google-specific setup and testing
VERCEL.md Recommended deployment flow
AI_ASSISTANTS.md Codex and Claude Code workflow
Start in src/config/product.js. Change the product name, public domain, pricing, default profile, and feature switches there. Replace the sample avatar and demo copy before distribution.
Do not place service-role keys, Google client secrets, refresh tokens, database passwords, or Stripe secrets in any VITE_ variable. Vite variables are shipped to the browser.
Free and Pro are stored in plan_catalog, and each workspace references a plan. Browser users cannot change that field. Until Stripe is added, update a workspace plan from a trusted server process or the Supabase dashboard.
Vercel is the recommended frontend host. Its Hobby plan is free for personal, non-commercial projects; professional or commercial deployments should use the appropriate Vercel plan. Supabase hosts the database, authentication, and server functions separately.
Before selling or sharing a copy:
- Replace all sample branding and copy.
- Add your commercial template license and support terms.
- Add real Terms and Privacy pages.
- Verify OAuth redirect URLs for the final domain.
- Run the database and security checks in
docs/SETUP.md. - Add production rate limiting or bot protection to public booking traffic.
- Do not include
.env.local, provider secrets, test-user data, or internal QA captures.